我有两台服务器的故障转移设置,并且想要在主服务器和副本服务器之间同步 /etc/letsencrypt 和 /etc/nginx。
我计划Match Address
在副本上使用仅设置PermitRootLogin yes
单个 IP。
这是个坏主意吗?如果是,我该如何安全地同步这些文件?
答案1
为了避免使用 root,您可以在两台主机上创建专用的 rsync 用户(例如 rsync),并添加文件 ACL 以授予其读/写权限:
# Primary: make source files readable
setfacl -R -m u:rsync:rX,d:u:rsync:rX /etc/letsencrypt /etc/nginx
# Replica: make target files writeable
setfacl -R -m u:rsync:rwX,d:u:rsync:rwX /etc/letsencrypt /etc/nginx
原则上这比使用 root 更好,因为 rsync 用户只能执行您授予其权限的操作,而 root 可以执行任何操作,除非您有效地限制它。
不过,您可能不得不时不时地重新应用 ACL。ACLd:
的默认 () 部分应该使它们适用于新创建的文件,但根据我的经验,随着时间的推移,这种情况往往会消失。如果 rsync 作业失败,您就会知道。