![不同的机器上使用 rsync 的相同用户和帐户?](https://linux22.com/image/547039/%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9C%BA%E5%99%A8%E4%B8%8A%E4%BD%BF%E7%94%A8%20rsync%20%E7%9A%84%E7%9B%B8%E5%90%8C%E7%94%A8%E6%88%B7%E5%92%8C%E5%B8%90%E6%88%B7%EF%BC%9F.png)
我有两台机器,相同的硬件(其中一台用于备份),相同的软件(Red Hat 4)。我需要知道如何同步用于 ftp 和电子邮件帐户的所有用户。将和复制/etc/passw
到/etc/shadow
另一台机器就足以使其工作了吗?也许使用 cron 和使用rsync
?
答案1
如果两个安装是真的相同,例如:没有不同的 uid,并且您不打算为备份服务器创建唯一用户(请注意,这意味着不安装需要自己的 uid 的软件)。大多数情况下这不是推荐的解决方案(推荐的解决方案是 NIS 或 LDAP),但它应该有效。
一个更灵活的解决方案是使用一个脚本,该脚本仅在需要时(用户是新用户或已被修改)复制每个用户的信息(密码、组、影子)。您可以在 diff 的帮助下使用 shell 脚本或使用 perl 或 python 之类的工具来执行此操作。如果您对此解决方案感兴趣并需要帮助,请告诉我。这样,您还可以轻松避免在系统之间共享系统帐户(包括 root),这可能不合适。
你确定你的 ftp 和邮件守护程序都只使用系统用户吗?有时它们使用自己的用户数据库。
编辑:
在主服务器上(此片段来自对服务器之间简单的单向同步用户密码列表):
awk -F: '($3>=500) && ($3!=65534)' /etc/passwd > passwd.prod
awk -F: '($3>=500) && ($3!=65534)' /etc/group > group.prod
awk -F: '($3>=500) && ($3!=65534) {print $1}' /etc/passwd | grep -f - /etc/shadow > shadow.prod
然后将 *.prod 文件传输到备份服务器(我猜您已经有公钥认证)并执行以下操作:
awk -F: '($3<500)' /etc/passwd > passwd.new &&
cat passwd.prod >> passwd.new &&
cppw passwd.new
awk -F: '($3<500)' /etc/group > group.new &&
cat group.prod >> group.new &&
cpgr passwd.new
awk -F: '($3<500) {print $1}' /etc/passwd | grep -f - /etc/shadow > shadow.new &&
cat shadow.prod >> shadow.new &&
cppw -s shadow.new
这应该保持备份服务器上的系统帐户不变,但在每次运行时替换常规用户信息。您可以更有效地执行此操作(搜索已更改的用户帐户,然后使用 sed 仅更改那些行),但这种方式更容易使用使用锁定的 cppw 和 cpgr。注意:如果您确实使用此功能,请先注释掉 cppw 和 cpgr 行,以便您可以检查 *.new 文件。
答案2
是的,如果机器确实具有可比性,那么只需复制这些文件就足够了。但是,您在备份机器上安装和运行的软件和服务可能只是另一台机器上的一小部分。建议仅复制发行版使用的 uid# 阈值以上的用户,以区分系统/软件用户和普通用户。