假设两个站点A和B在两端都有文件服务器。的内容/storage
应该在站点之间同步,保留所有权和权限。没有一个包罗万象的组,该组拥有/storage
. 如果运行 Unison 或 rsync pid=0,则进行同步很简单。但是 SSH 将用作传输,并且出于显而易见的原因,两端都禁用了 SSH root 登录。
如何使 A 和 B 与在这种情况下保留的所有权限保持同步。我能想到的两种方法:
- 运行允许 root 登录但只能通过 A 和 B 之间的 VPN 连接的辅助 SSH。
- 添加一个特殊的同步用户 sshd 配置强制执行一个
- Unison 或 rsync 的 SUID 包装器(正确操作很危险)。
sudo
Unison 或 rsync 的包装器
对问题远程使用 root over ssh for unison给出的答案建议通过 SSH 启用无密码 pubkey root 登录——我不太喜欢这种解决方案。
还有其他想法吗?
通过 SSH 的公钥 root 登录可能是您最好的选择。您还可以将此访问权限限制为单个主机:
甚至使用该
Match
指令来获取给定事物(地址、用户等)的唯一配置:如何以 root 身份运行远程 unison 实例:
远端
不要触摸您的 sshd 配置,尤其是不要像您在问题中所说的那样创建任何特殊的同步 [ssh] 用户
创建 sudo 包装器
vi sunison
:(是的,这是针对 Termux 环境的,根据您的需要进行简化)
客户端
-servercmd sunison
servercmd = sunison
笔记
servercmd = sudo unison
是最好的,但它对我不起作用