我想使用 rsync 定期将生产网站的内容备份到备份服务器。从远程系统传输的内容具有多种权限和所有者。我需要使用 root 来执行此操作吗?有没有办法为该任务分配另一个具有提升权限的用户?
更新:两台机器都运行 Ubuntu 12.04 Server。
答案1
另一种选择是,如果您想避免允许 UID 0 的人远程登录,可能是这样的:
- 将远程主机的备份暂存到该远程主机的本地目录中(以 root 身份)
- 仍然以 root 身份添加访问控制列表授予(非特权)备份用户访问该备份目录内的所有内容的权限 (
setfacl -R -m u:backup:rwx /PATH/TO/staging_dir
) - 以备份用户身份将备份目录 rsync 到本地计算机(
rsync -aH REMOTE:/PATH/TO/staging_dir /LOCAL/backup_dir
) - 删除暂存目录的内容
这种方法的缺点是您必须协调远程主机上的暂存和本地计算机上的 rsync。您可以让远程备份脚本在暂存完成后在备份用户的主目录中创建一个标记,并让 rsync 脚本在同步完成后删除该标记。
答案2
您可以创建一个 uid 为 的用户0
。这意味着权限相当于用户root
,但使用不同的名称。虽然它只是另一个“root”帐户,但它通过隐蔽性提供了某种安全性(不是真正的安全性)。
为此,请强制useradd
使用选项--non-unique
,否则它会阻止您创建共享 uid 的用户。