gpt4 book ai didi

linux - ACL 如何影响 ls/stat() 结果?

转载 作者:太空狗 更新时间:2023-10-29 11:09:49 25 4
gpt4 key购买 nike

当没有组可写位时,为什么目录会显示 drwxrwxr-x+

让我们给一个额外的用户 (john) rwx 一个目录的权限,像这样:

$ mkdir logfiles
$ setfacl -m user:john:rwx logfiles
$ getfacl -ce logfiles
user::rwx
user:john:rwx #effective:rwx
group::r-x #effective:r-x
mask::rwx
other::r-x

这正是我想要的方式,john 现在拥有与目录所有者等效的访问权限。然而,

$ ls -ld logfiles
drwxrwxr-x+ 2 bob users 4096 Mar 6 22:38 logfiles

$ find -perm +020 -ls
8197 4 drwxrwxr-x 2 bob users 4096 Mar 6 22:38 ./logfiles

没有组有写权限,但 ls 的输出和 find 的匹配结果会提示其他情况。这直接来自 lstat(2) 系统调用的 st_mode 字段;为什么要设置 S_IWGRP 位?

最佳答案

一旦为给定的文件或目录激活了 POSIX ACL。组类权限模式不再是组权限,它实际上是掩码ACL条目(与umask无关)。所以现在因为您的文件具有 POSIX ACL 扩展名(如 ls -l 中的 + 后缀所示),ls 显示的 rwx , stat 和 find 其实已经不是组类权限模式了。用chmod修改组类权限模式也只是改变了掩码,并没有改变真正的组类权限模式。这意味着您更改组类权限模式的唯一方法是使用 setfacl

掩码 ACL 条目似乎是“分配”组类的所有 ACL 条目的最大可能权限。这包括命名用户、命名组和拥有组。它不包括拥有用户和其他类。这可以限制为任何命名用户、命名组或拥有组分配的权限。为了获得最大的灵 active ,请将掩码设置为 rwx,然后根据您的判断设置命名用户、命名组和拥有组权限。这将适用于 cdls 和其他内容。然而,这确实意味着当使用 lsstat.. 等时,它们都会为组类显示 rwx,即使那不是是的。

为什么这个面具在这里?它解决什么目的?掩码似乎是为了向后兼容不理解 POSIX ACL 的程序。如果一个程序不理解 POSIX ACL 并且在组类中看到 rwx(实际上它实际上是掩码),它会成功访问目录/文件吗? (我不知道这个问题的答案)。我认为这真的很奇怪,应该被删除。但这就是 POSIX ACL 的工作方式。

关于linux - ACL 如何影响 ls/stat() 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15259965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com