如何在没有提示的情况下使用 passwd 设置用户密码?

如何在没有提示的情况下使用 passwd 设置用户密码?

我正在编写一个脚本来向系统添加大量用户。其中一部分涉及为每个用户设置默认密码。如何设置用户密码而不让系统预先提示我输入密码?

不幸的是 passwd 似乎不接受要设置的新密码的参数。我使用的是 Ubuntu 11.10。

答案1

尝试 usermod:

usermod --password PASSWORD USERNAME

唯一的问题是,这需要您必须先生成预加密的密码字符串。

为了生成加密密码,您可以使用openssl。例如:

usermod --password $(echo MY_NEW_PASSWORD | openssl passwd -1 -stdin) USERNAME

答案2

您应该查看该chpasswd命令(如果您的 Linux 版本可用):

echo 'userid:newpasswd' | chpasswd

或者,您可以 cat 文件,在单独的行上列出每个帐户的 userid:passwd。

就是这样。

答案3

受到 Eric Smith 想法的启发,结合openssl passwdusermod -p命令起作用了。生成密码的哈希值以及盐值。

$ openssl passwd -1  -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.

然后,将加密字符串复制到 usermod。确保用单引号括起来。

$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root

在影子文件中检查它。

$ grep root /etc/shadow
root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::

答案4

这是一个很好的解决方案,只有一行:

useradd -p $(openssl passwd -1 "$pass") "$user"

我可以添加其他参数,例如 -m 来创建主目录等。

相关内容