![Linux 从命令行添加用户和密码?](https://linux22.com/image/1546448/Linux%20%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%B7%BB%E5%8A%A0%E7%94%A8%E6%88%B7%E5%92%8C%E5%AF%86%E7%A0%81%EF%BC%9F.png)
根据此处的文档:
https://linux.die.net/man/8/adduser
我正在尝试在 Ubuntu 17.10 中创建一个具有默认主目录的新用户并指定密码:
useradd john -m -p mypassword
用户创建得很好,但如果我尝试使用新用户和指定的密码(mypassword)通过 SSH 连接到机器,我会得到:
$ ssh john@my-host
john@my-host's password:
Permission denied, please try again.
john@my-host's password:
那么为什么我创建用户时使用的密码不起作用呢?
根据以下答案,useradd
需要加密密码。从命令行我可以执行以下操作:
$ echo -n testpass | makepasswd --crypt-md5 --clearfrom -
testpass $1$eaXbTWAK$8flrqGzhmtWPjzRcrxWBf/
但是我如何将其传递给useradd
,以便能够在一行上完成整个操作?
答案1
从adduser(8)
手册页中:
-p, --password 密码
加密密码,由 crypt(3) 返回。
将密码指定为纯文本是行不通的。
答案2
您可以使用 $(some-cm) 结构组合多个命令。这将导致 bash 首先评估括号,然后使用返回值代替它:
echo foo $(echo bar)
将首先评估第二个命令,然后评估第一个命令。您可以使用它首先生成密码,然后将其放入 adduser 命令中。
或者您可以使用命令链:user=john; useradd -m $user && passwd $user
。但这仍会提示您输入密码。