我的服务器上有一个“备份”用户,需要具有所有位置的读取权限。这样做chown 444 -R / backup
似乎不太合适,我该怎么办?
答案1
你混合了两个命令:
chown 用于更改文件的所有者。例如:
chown root:adm /etc/passwd
chmod 用于更改文件的权限。例如:
chmod g+r myfile
无论你的目标是什么,你真的不想让你的备份用户拥有每个文件的所有权,并且你当然不想让系统上的每个用户都有权读取系统的每个文件。
你的目标是什么?
答案2
在 Linux 下,如果您使用支持 ACL 的文件系统(我认为 ext3、ReiserFS、ZFS 都可以),那么您可以将读取和目录遍历权限设置为备份操作员用户。
假设你想备份 /home
- 您的分区应该使用“acl”选项挂载(您可以使用
mount -o remount,acl /home
) - 安装 acl 工具(setfacl 和 getfacl)
setfacl -R -m u:"Backup User":rx /home
如果您想确保新文件和目录也具有适当的权限,请设置默认 ACL:
setfacl -R -m d:u:"Backup User":rx /home
您显然可以用更细粒度的方式来做到这一点(例如,如果您不想备份 gnupg 或 ssh 密钥,- 无论如何都应该受到密码保护)
在我看来,以 root 身份执行备份并不明智。首先,如果您不小心用完了磁盘空间,您可能会消耗掉最后一个可用块,并使系统变得不稳定。其次,如果您不完全确定用于备份的脚本或命令,恶意用户可能会让您的备份出现递归,或者以 root 身份执行恶意操作。
我个人使用 rsync 机制来同步副本服务器上的服务器。除了使用 ACL 的主服务器之外,我在大多数同步点上都使用简单的组权限
答案3
正确的做法不是更改文件权限。您应该使用sudo
和/或 setuid 可执行文件。
答案4
一种不太具侵入性的方法是将备份用户添加到系统上的每个组中。
属于每个组的用户将继承这些组的权限,因此您可以备份任何组可读的文件。如果您想备份 root 拥有的文件,这将包括 root 组。
这不一定能让您备份所有文件,但可以让您备份所有用户未设置为私密的文件。X00 的文件将不会被备份。
这种方法的一个缺点是,您必须跟上新组的创建速度。此外,如果您想要备份主目录,则至少需要为 /home 设置执行权限(对于组)。
正如其他人提到的那样,这可能会破坏 ssh 密钥,具体取决于您的实施。