在所有地方授予用户读取权限(Linux)

在所有地方授予用户读取权限(Linux)

我的服务器上有一个“备份”用户,需要具有所有位置的读取权限。这样做chown 444 -R / backup似乎不太合适,我该怎么办?

答案1

你混合了两个命令:

  • chown 用于更改文件的所有者。例如:chown root:adm /etc/passwd

  • chmod 用于更改文件的权限。例如:chmod g+r myfile

无论你的目标是什么,你真的不想让你的备份用户拥有每个文件的所有权,并且你当然不想让系统上的每个用户都有权读取系统的每个文件。

你的目标是什么?

答案2

在 Linux 下,如果您使用支持 ACL 的文件系统(我认为 ext3、ReiserFS、ZFS 都可以),那么您可以将读取和目录遍历权限设置为备份操作员用户。

假设你想备份 /home

  1. 您的分区应该使用“acl”选项挂载(您可以使用mount -o remount,acl /home
  2. 安装 acl 工具(setfacl 和 getfacl)
  3. setfacl -R -m u:"Backup User":rx /home

如果您想确保新文件和目录也具有适当的权限,请设置默认 ACL:

  1. setfacl -R -m d:u:"Backup User":rx /home

您显然可以用更细粒度的方式来做到这一点(例如,如果您不想备份 gnupg 或 ssh 密钥,- 无论如何都应该受到密码保护)

在我看来,以 root 身份执行备份并不明智。首先,如果您不小心用完了磁盘空间,您可能会消耗掉最后一个可用块,并使系统变得不稳定。其次,如果您不完全确定用于备份的脚本或命令,恶意用户可能会让您的备份出现递归,或者以 root 身份执行恶意操作。

我个人使用 rsync 机制来同步副本服务器上的服务器。除了使用 ACL 的主服务器之外,我在大多数同步点上都使用简单的组权限

答案3

正确的做法不是更改文件权限。您应该使用sudo和/或 setuid 可执行文件。

答案4

一种不太具侵入性的方法是将备份用户添加到系统上的每个组中。

属于每个组的用户将继承这些组的权限,因此您可以备份任何组可读的文件。如果您想备份 root 拥有的文件,这将包括 root 组。

这不一定能让您备份所有文件,但可以让您备份所有用户未设置为私密的文件。X00 的文件将不会被备份。

这种方法的一个缺点是,您必须跟上新组的创建速度。此外,如果您想要备份主目录,则至少需要为 /home 设置执行权限(对于组)。

正如其他人提到的那样,这可能会破坏 ssh 密钥,具体取决于您的实施。

相关内容