我正在编写一个脚本来向系统添加大量用户。其中一部分涉及为每个用户设置默认密码。如何设置用户密码而不让系统预先提示我输入密码?
不幸的是 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 passwd
和usermod -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 来创建主目录等。