我正在尝试将用户添加到运行我的节点应用程序的服务器上。现在我正在使用:
exec("useradd -mp {password-hash}")
使用由
创建的哈希exec("mkpasswd -m des {password}")
这会在进程列表中显示密码,应该不惜一切代价避免使用。
这就是为什么我想知道npm上是否有模块或者更简单的方法以编程方式将linux用户添加到系统中(这是必要的,因为我正在构建的应用程序在用户注册时在系统上创建用户帐户网络)。这可以在不引起我目前正在做的系统命令的情况下完成吗?我既没有找到npm模块,也没有找到使用node与ubuntu / unix用户管理交互的任何信息。
使用最顶层答案中的Mustafa提示,我使用mkpasswd
实现了spawn
命令的一个版本。在CoffeeScript中,它看起来像这样:
{spawn} = require 'child_process'
child = spawn 'mkpasswd', ['-m','des','--stdin']
child.stdout.on 'data', (data)->
console.log 'password hash arrived: ', data.toString()
child.stdin.write 'password'
确保在调试代码时向child.stderr
和child.stdout
添加正确的错误处理事件处理程序。
答案 0 :(得分:1)
您可以使用这些命令,也可以手动将用户添加到/etc/passwd
,将其密码添加到/etc/shadow
。
/etc/passwd
条目的格式:username:passwd:UID:GID:full_name:directory:shell
Passwd应该是x,如果你想要它使它安全,所以它将从阴影中读取。
/etc/shadow
条目的格式:username:passwd:last:may:must:warn:expire:disable:reserved
如果正确添加它们,则没有问题。
但是,当你拥有所需的工具时,为什么还要手动打扰?如果您担心隐私,可以发出mkpasswd -m des --stdin
,它将从标准输入中读取密码。使用spawn
时,您还可以控制进程的stdin
和stdout
,而不是exec。 stdin
只是一个可写流,您可以写入它并从stdout
读取输出。或者你可以找到一个npm模块,它使用给定的算法,DES,AES等生成哈希值。