以编程方式更改密码

以编程方式更改密码

在当前版本的 Raspian 中,我知道可以从命令行更改当前登录用户的密码,如下所示:

sudo passwd

然后将提示用户输入新密码两次。这将产生如下输出:

Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

我想知道是否有可能以编程方式更改密码的方法,例如通过 shell 脚本。

我正在尝试制作一个配置脚本来部署在我的 Raspberry Pi 上,并且我不想手动为它们输入新密码。

答案1

您正在寻找chpasswd命令。你会做这样的事情:

echo 'pi:newpassword' | chpasswd # change user pi password to newpassword

请注意,它需要以 root 身份运行,至少使用默认的 PAM 配置。但对于系统部署脚本来说,以 root 身份运行可能不是问题。

此外,您可以通过向其提供多行输入来同时处理多个用户。

答案2

yes另一种选择是在脚本中使用该命令。

yes newpassword | passwd youruser

这将发送newpasswordpasswd命令youruser

应该提到的是,通过脚本设置/修改用户密码可能会带来安全风险,应尽可能避免。

编辑:

这个答案需要 root 访问权限。抱歉之前没有提到这一点。这是我在执行需要 root 访问权限的管理任务时使用的方法。

答案3

@derobert 的答案是正确的,但我必须以超级用户身份执行命令,如下所示:

echo 'pi:newpassword' | sudo chpasswd # change user pi password to newpassword

注意sudo后面的|sudo一开始不会帮助你,因为它只适用于echo

相关内容