ACL 与标准文件权限——访问文件时使用哪个?

ACL 与标准文件权限——访问文件时使用哪个?

ACL 和标准文件权限似乎是同步的:

$ getfacl test.cpp
# file: test.cpp
# owner: scdmb
# group: scdmb
user::rw-
group::rw-
other::r--

$ ls -l test.cpp
-rw-rw-r-- 2 scdmb scdmb 173 Jan  1  1970 test.cpp

但是据我所知,inode 中有两个位置用于保存文件权限(i_mode 字段)和放置 ACL 的扩展文件属性。那么当我访问文件时,会使用哪种文件权限 - 标准还是 ACL?或者也许这是以不同方式呈现的同一件事?

答案1

来自getfacl 手册页

getfacl的输出格式如下:

           1:  # file: somedir/
           2:  # owner: lisa
           3:  # group: staff
           4:  user::rwx
           5:  user:joe:rwx               #effective:r-x
           6:  group::rwx                 #effective:r-x
           7:  group:cool:r-x
           8:  mask:r-x
           9:  other:r-x
          10:  default:user::rwx
          11:  default:user:joe:rwx       #effective:r-x
          12:  default:group::r-x
          13:  default:mask:r-x
          14:  default:other:---

第 4、6 和 9 行对应于文件模式权限位的用户、组和其他字段。这三个称为基本 ACL 条目。第 5 和 7 行是命名用户和命名组条目。第 8 行是有效权限掩码。此条目限制授予所有组和命名用户的有效权限。(文件所有者和其他权限不受有效权限掩码影响;所有其他条目均受其影响。)第 10-14 行显示与此目录关联的默认 ACL。目录可能有默认 ACL。常规文件永远没有默认 ACL。

事实上,你的线条只带有::和 而没有,<user|group|other>:<name>:<perms>这表明你没有扩展 ACL。对于此特定文件,您只是使用一种奇特的方式来获取与(用户/组/其他权限位,也称为“基本 ACL”)getfacl中显示的相同信息。ls -la

至于哪些权限用过的:简而言之,这取决于命令ACL 的权限。请参阅这里这里了解详情。一般来说,如果拒绝在 ACL 列表中排在第一位,则以后不可能通过显式允许重新授予权限。拒绝总是优先的。

还有一篇更长的文章,参考资料更多这里在 Unix.SE 上。

相关内容