允许 rsync 以 root 身份远程运行,但仅限于读取文件。只读 root 用户?

允许 rsync 以 root 身份远程运行,但仅限于读取文件。只读 root 用户?

我想使用 rsync-over-ssh 将备份从许多远程目标机器拉到中央备份。

我可以以 root 用户身份执行此操作,但这会让我意外地运行错误的 rsync 命令,该命令会写入应备份的计算机或从中删除。

是否可以在目标计算机上设置只读 root 用户?

rsync 命令需要能够读取目标计算机上的任何文件,但不能写入。

答案1

以专用非 root 用户身份运行 rsync 的读取端,但使用能力 CAP_DAC_READ_SEARCH。用户应该拥有文件系统的完整视图(当然)并访问/usr/bin/rsync具有此功能的副本。我对 Linux 上的功能不是很熟悉,但我认为这是如何设置它的:

cp /usr/bin/rsync /usr/local/sbin/rsync-for-backup
chown root.root /usr/local/sbin/rsync-for-backup
chmod 700 /usr/local/sbin/rsync-for-backup
setfacl -m user:backupuser:rx /usr/local/sbin/rsync-for-backup
setcap cap_dac_read_search+ep /usr/local/sbin/rsync-for-backup

请记住,每当 rsync 更新时,都要更新副本。--rsync-path=/usr/local/sbin/rsync-for-backup从另一边过去。

(我假设是 Linux。其他 Unix 变体需要其他解决方案。)


其他一些潜在的方法:

  • 来自的bindfs解决方案https://unix.stackexchange.com/a/91522可以让您读取文件内容,但会破坏一些元数据。我不确定是否有办法使备份工作。
  • 以 root 身份运行但具有限制性 SELinux 规则应该可以解决问题,但不要问我规则必须是什么。

答案2

您需要以rsync具有只读权限的远程系统上的用户身份运行。例如rsync -a read_only_user@target_machine:/path/to/files /backup/location

值得注意的是,rsync只有与该标志一起使用时才会删除文件--delete

您可能会查看 rsync 包装器rrsync,您可以在其中指定-ro标志。

对于您的用例,我建议您也看rsnapshot一下,因为它对于中央备份非常方便,同时通过利用硬链接节省磁盘空间(https://rsnapshot.org)。

相关内容