我可以从命令行无需交互地更改 Linux 中的用户密码吗?

我可以从命令行无需交互地更改 Linux 中的用户密码吗?

我有一个特定的用例,我非常希望能够使用单个命令更改用户密码,而无需交互。这是以安全的方式完成的(通过 SSH,在只有一个用户能够登录的系统上),因此在命令行上公开新密码(如果需要,甚至可以公开旧密码)是可以的。FWIW,这是一个 Ubuntu 系统。

我只是想避免为了这一项任务而向该系统添加类似 Expect 的东西。

答案1

你可以使用密码

echo user:pass | /usr/sbin/chpasswd

答案2

您可以使用usermod选项-p提供密码哈希(而不是实际密码)。您可以使用类似mkpasswd -m sha-256mkpasswd -m md5

答案3

当然。

  1. 在本地系统上对密码进行哈希处理。
  2. 连接到远程机器(您想要更改密码的地方)
  3. 将散列密码和用户名提供给一个创意sed脚本,该脚本会更新系统的密码文件(/etc/shadow,,/etc/master.passwd无论它是什么)。

答案4

如果--stdin选项不起作用,我们基本上可以使用两个选项:

  1. chpaswd或者使用脚本中调用的另一个实用程序。
  2. 或使用echo "current_password\nnew_password\nnew_password" | passwd user_name

相关内容