我有一个特定的用例,我真的很希望能够通过一个没有交互性的命令来更改用户的密码。 这是以安全的方式完成的(通过SSH,以及只有一个用户可以login的系统),所以在命令行上公开新密码(甚至是旧密码,如果需要的话)是很好的。 FWIW,这是一个Ubuntu系统。
我只想避免为这个任务添加一些像Expect一样的系统。
你可以使用chpasswd 。
echo user:pass | /usr/sbin/chpasswd
您可以使用带有-p选项的usermod来提供密码哈希(不是实际的密码)。 您可以使用类似mkpasswd -m sha-256或mkpasswd -m md5来生成密码哈希
当然。
/etc/shadow , /etc/shadow /etc/master.passwd ,无论它是什么)的创意sed脚本。 passwd实用程序有一个–stdin选项,指出:
这个选项用于表示passwd应该从标准input中读取新的密码,这个input可以是一个pipe道。
句法:
echo "newpass" | passwd --stdin user1
即使你提到你不关心,你可以把密码放在一个文本文件中,然后用cat pass.txt代替echo命令,这样它就不会出现在bash历史logging中。
如果--stdin选项不工作,我们基本上可以使用两个选项:
chpaswd的工具。 echo "current_password\nnew_password\nnew_password" | passwd user_name echo "current_password\nnew_password\nnew_password" | passwd user_name