![以 root 身份使用 rsync 在服务器之间同步 /etc/letsencrypt 和 /etc/nginx 是不是一个坏主意?](https://linux22.com/image/759194/%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E4%BD%BF%E7%94%A8%20rsync%20%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B9%8B%E9%97%B4%E5%90%8C%E6%AD%A5%20%2Fetc%2Fletsencrypt%20%E5%92%8C%20%2Fetc%2Fnginx%20%E6%98%AF%E4%B8%8D%E6%98%AF%E4%B8%80%E4%B8%AA%E5%9D%8F%E4%B8%BB%E6%84%8F%EF%BC%9F.png)
我有两台服务器的故障转移设置,并且想要在主服务器和副本服务器之间同步 /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 作业失败,您就会知道。