更改 Linux 服务器上所有用户的密码

The*_*eek 6 security scripting linux password command-line-interface

我有 10 台 Linux 服务器需要锁定,需要一次性重置每个用户的密码。这背后的故事很长,但总体思路是我需要它在特定时间很快发生。我将为所有用户帐户使用一个单一的、严格的密码(只是最初),所以这不需要从密码文件或类似的东西中读取。

所以我需要的是最好的方法来编写这个脚本,这样我就可以一次重置所有密码。我可以使用该cat /etc/passwd | cut -f1 -d:命令提取用户帐户列表,但最终会包含所有帐户,包括我认为不应弄乱的系统帐户。

那么我最好的选择是什么?

笔记!重置密码时,您还需要确保擦除~/.ssh/authorized_keys文件中的任何额外内容。直到后来才记得这一点 - 谢天谢地,我几乎紧紧地锁定了服务器,除了服务器到服务器的东西之外,authorized_keys 中没有任何东西。

Dan*_*iel 5

您可以选择 UID >= 500 以确保您只获取真实用户而不是系统帐户,然后使用 passwd 的选项 --stdin 更改密码。

这样的事情应该工作:

 while IFS=: read u x nn rest; do  if [ $nn -ge 500 ]; then echo "YOURSTRONGPASSWORD" |passwd --stdin $u; fi  done < /etc/passwd
Run Code Online (Sandbox Code Playgroud)

  • 'passwd --stdin' 是非标准的;我建议改用'usermod -p'。 (2认同)