文件系统权限:可以备份所有文件的用户

Huc*_*kle 3 backup permissions rsync group

我正在为网络上的某些计算机设置自动备份作业。有一台服务器每天都会运行一个rsync命令来备份其他每台计算机。我希望rsync作业运行的用户能够读取每个人的主目录(包括敏感文件,如加密的秘密 SSH 密钥),但不能在系统上的任何地方写入(除了/tmp)。我还想防止普通用户读取彼此的主目录,尤其是敏感部分。

我的第一个想法是创建一个仅包含备份用户的组。然后我会让用户将chgrp他们的文件放到备份组中。不是成员本身,他们将无法读取彼此的文件,但备份用户可以读取他们想要备份的所有内容。

但是,用户不能chgrp加入他们不属于的组。我无法将它们添加到组中,因为这将使用户能够读取彼此的主目录。

我曾考虑NOPASSWDsudoers文件中为备份用户提供一个条目,允许他仅以rsyncroot 身份运行所需的确切命令,但是如果我没有正确设置它,这似乎是灾难性的(如果有办法制作符号链接)到/etc/sudoers并获取rsync命令以将其用作目的地,例如)。

Gil*_*il' 5

TL、DR:以 root 身份运行备份。rsync通过sudo授权精确命令没有错,只要仔细查看参数即可;允许调用者指定参数是错误的。

如果您希望备份用户能够读取文件,请参阅允许用户读取其他一些用户的主目录。想法是创建文件系统的bindfs视图,该用户可以在其中读取所有内容。

但是文件级别并不是解决这个特定问题的最佳级别。通过做备份的问题rsync是,他们是不一致的:如果用户更改file1 然后 file2在备份过程中,但备份到达file2之前file1,则备份将包含旧版本file2和新版本file1。如果file2是新版本的file1file1被删除,这意味着这个文件根本不会出现在备份中,这显然是不好的。

此问题的解决方案是创建文件系统的快照,并从中运行备份。

根据您的快照技术,可能有一种方法可以确保用户可以读取快照。如果没有,请挂载快照并使用基于文件系统的通用解决方案。即使有,rsync 仍然存在问题,因为如果您以普通用户身份运行它,它将无法备份所有权。因此,如果您要备份多个用户的目录,则需要以 root 身份运行备份。