我有一个特定的用例,我非常希望能够使用单个命令更改用户密码,而无需交互。这是以安全的方式完成的(通过 SSH,在只有一个用户能够登录的系统上),因此在命令行上公开新密码(如果需要,甚至可以公开旧密码)是可以的。FWIW,这是一个 Ubuntu 系统。
我只是想避免为了这一项任务而向该系统添加类似 Expect 的东西。
答案1
你可以使用密码。
echo user:pass | /usr/sbin/chpasswd
答案2
您可以使用usermod
选项-p
提供密码哈希(而不是实际密码)。您可以使用类似mkpasswd -m sha-256
或mkpasswd -m md5
答案3
当然。
- 在本地系统上对密码进行哈希处理。
- 连接到远程机器(您想要更改密码的地方)
- 将散列密码和用户名提供给一个创意
sed
脚本,该脚本会更新系统的密码文件(/etc/shadow
,,/etc/master.passwd
无论它是什么)。
答案4
如果--stdin
选项不起作用,我们基本上可以使用两个选项:
chpaswd
或者使用脚本中调用的另一个实用程序。- 或使用
echo "current_password\nnew_password\nnew_password" | passwd user_name