授予用户对所有文件和文件夹的权限

授予用户对所有文件和文件夹的权限

我想要一个有权访问系统上所有文件和文件夹的用户。这是为了在本地计算机上使用 RSYNC 来备份远程计算机。

目前我们正在使用该用户backups,尽管我们已将该用户添加到组中sudo,但adminrsync 仍然返回如下消息:

rsync:opendir“/location/to/folder”失败:权限被拒绝(13)

rsync:send_files 无法打开“/location/to/file”:权限被拒绝 (13)

知道我们如何授予用户backups访问所有内容的权限(除了将用户添加到所有组之外 - 我们尝试备份的远程服务器是一个专用托管服务器,其中每个帐户在系统上都有自己的用户)。

谢谢你的帮助。

答案1

仅将用户添加backups到用户组sudo并不会自动授予该帐户对系统上所有文件的访问权限。它授予用户运行命令的权限sudo

由于您使用的是公钥身份验证(可能没有密码),因此我会考虑到安全性和易于实施的情况来处理此问题。使用ssh允许您限制用户仅执行非常特定的命令。在这种情况下,您可以允许用户以超级用户权限backups执行rsync

您已执行密钥交换并验证身份验证是否成功。在要从中authorized_keys备份目录的远程主机上的文件中/home,您可以command=向用户使用的密钥添加指令backups。该指令仅允许命令运行时密钥用于身份验证。所以键的第一个字段看起来类似于:

command="/path/to/sudo /path/to/rsync -az /home /local/folder" ssh-rsa AAAAB3NzaC1yblahblahblah

您可以更进一步,向密钥添加更多选项,例如from=myhost,no-pty,no-X11-forwarding.

这应该为您提供良好的安全性,并且不需要您修改底层文件系统权限。您可能需要使用放置在文件中的命令,authorized_keys直到它按照您的预期工作为止;你可能需要花一点时间才能理解它。中指定的命令authorized_keys基本上将覆盖rsync您将从连接主机传递的选项。

中有很多很好的信息man sshd。您需要专门阅读 AUTHORIZED_KEYS FORMAT 部分。

答案2

一种选择是在远程系统上运行 rsync 服务器。

基本上,创建一个rsync.confwithuid=root然后使用rsync -az rsync://domain.com.

http://pastebin.com/5hQx1mRV例如其他人写的和配置 rsync 守护进程了解在 Ubuntu 中启用服务器的一些基础知识。

请注意,您必须考虑这样做的安全性。更好的方法可能是让远程系统推送到本地系统。

答案3

你也许可以使用 ACL如果底层文件系统支持它。

您应该在每个文件和目录的 ACL 中添加组备份。但要为新创建的文件和目录自动添加,您应该首先将默认 ACL 设置为所有现有目录。所以在远程服务器上:

sudo find /home -type d -print0 | xargs -0 setfacl -d -m group:backup:r-x

然后您应该拥有所有现有目录的 rx 权限并读取文件。您可以使用 2 个命令来完成此操作(这次不带 -d)

sudo setfacl -R -m group:backup:r-- /home
sudo find /home -type d -print0 | xargs -0 setfacl -m group:backup:r-x

这将为您提供将文件读取到组备份的额外权限,而无需更改拥有每个文件的现有用户和组。

注:加速查找| xargs 命令您可以将以下选项添加到 xargs 命令:-P n其中 n 是并行进程的数量。您可以将其设置为您机器上的 cpu 数量 + 1。

相关内容