我正在尝试设置默认权限,以便默认情况下在我的文件夹 hackerrank 中创建的所有文件都将使用 rwx 创建。
我已经做了一个chmod g+s
(因为我正在查看不同的线程,老实说不确定这做了什么,但以防万一它改变了任何东西):
chmod g+s hackerank/
然后尝试在组上设置默认 ACL:
setfacl -d -m g::rwx hackerank/
如果我检查 ACL,它们现在看起来不错:
getfacl hackerank/
# file: hackerank/
# owner: will
# group: will
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:will:rwx
default:mask::rwx
default:other::r-x
但我创建一个新文件,它仍然继承-rw-rw-r--+
(+显示ACL属性有效:
touch hackerank/test
ll hackerank/
total 8.0K
drwxrwsr-x+ 2 will will 4.0K Jul 11 16:09 ./
drwxr-xr-x 3 will will 4.0K Jul 11 15:03 ../
-rw-rw-r--+ 1 will will 0 Jul 11 16:09 test
getfacl hackerank/test
# file: hackerank/test
# owner: will
# group: will user::rw-
group::rwx #effective:rw-
group:will:rwx #effective:rw-
mask::rw-
other::r--
关于我错过了什么的任何线索吗?
感谢您的帮助
答案1
另请参阅两个月前的这个问题:使用 ACL 设置“x”(可执行)位。有一个很好的指针指向官方文档中定义的位置,在伊尔卡丘的回答。
应用程序以给定模式创建文件。然后,该模式受到当前的限制,但从未扩展umask
:
strace touch a
...
open("a", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
例如,我有umask
002 的文件,它将上面创建的文件限制为0664/-rw-rw-r--
(使用 查看stat a
)。
我的理解是这也限制了 ACL。 ACL 不允许超出您在读取文件模式时看到的权限,因此
will
按组对文件的访问权限不能超过rw-
.这是由mask
ACL... 强制执行的,它解释了 getfacl 输出中的“有效”注释。编辑:掩码适用于除“user::”(文件所有者)和“other:”之外的所有 ACL 条目。所有此类 ACL 条目均受掩码限制。
will
除和之外的用户和组的访问权限will
不能超过r--
。