Linux 从命令行添加用户和密码?

Linux 从命令行添加用户和密码?

根据此处的文档:

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。但这仍会提示您输入密码。

相关内容