如何在许多 Linux 服务器上编辑 /etc/shadow?

如何在许多 Linux 服务器上编辑 /etc/shadow?

我想更改大约 20 台 Linux 服务器上的 root 密码。主要是 CentOS 和 Ubuntu。

因此我研究了 Puppet、chef 和 cfengine,但我真的不知道他们是否可以做到这一点,或者他们是否会为这项任务而过度努力?

有谁能建议如何/etc/shadow在多台 Linux 服务器上编辑配置文件等吗?

答案1

密码可能是你正在寻找的

答案2

usermod -p '_hash_' root你可以直接运行命令哈希是适用于该系统的密码哈希值。因此,类似这样的命令usermod -p '$1$aNwwp0wS$RzSqCt3ntYs.V2TxcXheA' root将使 root 拥有密码password

如果您想以正确的方式执行此操作,您还需要为每个系统生成唯一的盐和唯一的哈希。如果已安装,您可以使用它mkpasswd来达到此目的。

$ # create a md5 password has for 'password'
$ echo 'password' | mkpasswd -s -m md5
$1$mJrKn6xs$NTfRbrqbaVzsqcPzyXXt3/

PS 我个人更喜欢将 root 设置为禁用密码,然后使用基于 ssh 密钥的身份验证来访问 root 帐户。您应该能够非常轻松地为自己构建一个脚本来自动更新 root 文件authorized_keys。根据您的 SSH 日志级别,您还将看到使用哪个密钥访问 root 帐户,这可能有助于追踪谁破坏了某些东西。

答案3

你不需要。真的,不要直接编辑 /etc/shadow。对于 20 台服务器,我可能只会登录并使用 passwd 更改 root 密码。

如果你必须经常这样做,你可以使用预计并将其放入循环中,例如:

for i in `cat <file_with_server_names>`
do 
     ssh <user>@$i
     <expect stuff here> 
done

抱歉,这个脆弱的伪代码我已经大约 6 个月没有用过了。

root 是一个棘手的问题,我个人不喜欢将它绑定到任何外部服务,以防网络/服务出现故障。通常我会建议 LDAP 或 AD 集成(如果您已经有一个 AD 域!)

答案4

如果您已为所有系统建立了 ssh 密钥交换,我会考虑使用基本循环 ssh 到每个系统并更新密码。如果没有,则单独 ssh 到每个系统并更改密码可能更有意义。20 个系统并不是一个很大的数字。

相关内容