ACL 掩码未按预期工作

enz*_*tib 5 acl permissions cp

如果我复制一个基本 ACL 为的文件:

u::rw-,g::r--,o::r--
Run Code Online (Sandbox Code Playgroud)

进入具有默认 ACL 的目录:

u::rwx,g::r-x,g:users:rwx,m::rwx,o::r-x
Run Code Online (Sandbox Code Playgroud)

我获得了一个掩码为m::r--. 我本来期望两个组条目的权限的联合(即m::rwx)。

为什么会这样?它是否取决于创建文件时mode使用的参数cp

Gil*_*il' 4

(我假设您使用的是 Linux,ACL 的工作方式因 UNIX 变体而异。)

cp复制文件时不会执行任何特殊操作;它使用原始文件的模式创建文件,并用目录掩码进行掩码。由于cp不会对文件的掩码执行任何操作,因此掩码最终会成为目录掩码 ( ) 和文件的组权限 ( ) 的交集rwxr

open("dir/file", O_WRONLY|O_CREAT|O_EXCL, 0644)
Run Code Online (Sandbox Code Playgroud)