我想同步(双向) 服务器(S)和本地计算机(L)之间的某个文件夹。 在S和L上,我有相同的系统(Ubuntu)和一个用户jan,具有sudo权限(即在pipe理员组中)。 S只能通过密钥授权访问SSH。
我想我可以为此unison使用。 我已经创build了一个密码为空的新密钥对。 问题是我不想允许无限制地访问这个无密码的密钥。
(编辑:我想(例如)为同一用户区分不同的SSH授权密钥 – 在一种情况下,限制访问只有一个目录,如果可能只运行特定的命令 – 下面的rrsync。)
我可以使用rsync 。 它有一个服务器端脚本rrsync ,然后可以限制authorized_keys文件中的密钥访问:
command="$HOME/bin/rrsync -ro /home/jan/sync_folder/".
但rsync无法处理删除的文件等
另一个select是在服务器上设置chroot jail ,但是我仍然需要能够使用我的第一个密钥自由访问服务器。
我可以创build一个新的用户帐户 ,通过它来完成同步(并应用chroot jail +不包括在pipe理员组中),但是我将失去有关文件(所有权,权限)的元信息。 所有文件都只有一个用户 (所有权不是问题),但一些文件是可执行的脚本,有些则不是。
任何想法如何同步文件夹,同时保持访问安全? 我没有这个工具的偏好。 以上是经过一番研究后我发现的。
为什么不应该rsync处理删除的文件? – 删除应该是这样做的。
实际上在ask-ubuntu上没有命令唯一的键
这应该是一个评论,但它有点长。
你需要更好地定义你的问题,然后才能得到明智的答案(而不是猜测)。
如果文件集包含不同用户拥有的文件,则写入端需要以root身份运行。 这不需要通道以root身份运行。 rsync的混淆源于你需要同时支持文件删除和双向同步。 如果一个文件存在于节点“A”而不是节点“B”,那么这是否意味着它已经在节点“B”上被删除,或者最近是否在节点“A”上被创build – 任何在调用之间不保留状态的东西都不能说明。
您可以用来复制文件的工具没有尽头 – drbd具有镜像到本地物理磁盘,ssh文件系统,Andrew文件系统等等。 也许你selectssh是一个任意约束。 尽pipe如果你只是问在主机上镜像文件系统的select是什么,那么你的问题可能会被封闭为“太宽泛”。
我不想无限制地访问这个无密码的密钥
你是什么意思的“无限制访问”? 如上所述,写入结束需要以“root”身份运行。 你是否想要限制root可以在Unix系统上做什么? 这是可能的 – 但非常困难。