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

fad*_*bee 4 root permissions rsync group ownership

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

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

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

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

Gil*_*il' 6

以专用非 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
Run Code Online (Sandbox Code Playgroud)

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

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


其他一些潜在的方法:

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