我在使用 unison 在两个 Ubuntu Samba AD DC 之间同步 sysvol 上的 unix 权限和所有权时遇到问题。我已将 idmap.ldb 文件从 DC1 复制到 DC2,并且 sysvol 上的 Windows 权限似乎设置正确。但是,不正确的 Unix 权限和所有权阻止客户端从 DC2 上的 sysvol 读取新创建的策略。如果我运行
$ sudo samba-tool ntacl sysvolreset
权限问题已修复,客户端能够读取策略。
我的设置基于这里的一个。但是,我们的安全策略不允许 root SSH 连接,因此我创建了一个用户 sysvolreplicator,并赋予其无密码 sudo 权限,以便使用 unison 和 rsync,而不是使用 root。这是我/root/.unison/default.prf
在 DC1 上的设置。
root = /var/lib/samba
root = ssh://sysvolreplicator@DC2//var/lib/samba
path = sysvol
auto=true
batch=true
perms=0
rsync=true
maxthreads=1
retry=3
confirmbigdeletes=false
servercmd=sudo /usr/bin/unison
copythreshold=0
copyprog = /usr/bin/rsync -XAavz --rsync-path='sudo /usr/bin/rsync' --rsh='ssh -p 22' --inplace
copyprogrest = /usr/bin/rsync -XAavz --rsync-path='sudo /usr/bin/rsync' --rsh='ssh -p 22' --partial --inplace
copyquoterem = true
copymax = 1
logfile = /var/log/sysvol-sync.log
Unison 每 5 分钟由 root crontab 运行一次。两个 DC 上的 unison 版本均为 2.51.5。此外,我在具有 root ssh 的测试环境中尝试了 samba 文档中的原始 unison 配置,但遇到了同样的问题。