rsynced 文件没有获得正确的 ACL

Eri*_*ski 3 linux nfs rsync access-control-list

我使用 rsync(rsync-3.0.6-5.el6_0.1.x86_64在 Scientific Linux 6 上)将文件从 VFAT 磁盘传输到 NFS 安装的 ext3 文件系统。我在 ext3 系统上设置了 ACL,并且在创建新文件或目录(通过 NFS 挂载,通过命令行或 Nautilus)时,一切都按预期工作。但是当 rsync-ing 或 cp-ing 时,不会为 ext3 分区上复制的文件创建 ACL。

背景是 VFAT 来自相机,间歇性安装,并且不会为目录或文件创建 acl。有没有办法 rsync(甚至复制)让 ie 默认 ACL 规则将 ACL 应用于 rsync-ed 或 cp-ed 文件和目录?

Eri*_*ski 6

在朋友的帮助和咬牙切齿之后,我明白了这一点。当然,答案在手册页中。

问题源于以下事实(来自 acl 手册页):“文件权限位的修改导致相关 ACL 条目的修改”,反之亦然。因为没有正确的标志,rsync 使用源权限,这会更改目标上的 ACL。

rsync 中的解决方案是使用 --chmod 选项。从 rsync 手册页(在 --perms 部分):

要为新文件提供目标默认权限(同时保持现有文件不变),请确保关闭 --perms 选项并使用 --chmod=ugo=rwX (确保启用所有非屏蔽位)。

然而,人们想要使用的权利取决于预期的目标权利。例如,在我的例子中,源权限是 700,没有 ACL。目标子目录具有如下默认 ACL: d:u:user1:rwx,d:u:user2:rwx,u:user1:rwx,u:user2:rwx,d:m:rwx,m:rwx. 也就是说,它有两个命名用户、一个显式掩码以及相同的默认值。这相当于 770。

使用 rsync(或 cp-ing)时,源权限 700 覆盖默认 ACL 掩码,将其设置为---而不是rwx.

由于这种情况下的使用需要“用户”和“基团”,但没有“其它”源的权限,我使用了下列标志rsync的: --chmod=ug=rwx。第一个等号后面的字母表示以下烫发适用于 u(ser) 和 g(roup)。第二个等号后面的字母表示这些用户获得的权限。这使得 rsync 将目标上的权限设置为 770。

实际命令是: rsync -av --chmod=ug=rwX /<source> /<destination>

有几点需要注意。首先,rsync 权限行为取决于接收端的版本。检查手册页以获得明确的答案。其次,标志的顺序很重要:-a、-A 等实际上可以使用,但必须在 --chmod 标志之前。

最后,我没有看到类似的标志可用于 cp 使 rsync 成为镇上唯一用于同步文件并将目标上的默认 ACL 应用于具有不同源权限的文件的游戏。