如果文件具有read
用户的常规权限约翰write
,并且还拥有用户的 ACL 权限约翰,在这种情况下会发生什么:
- 是否仅应用常规权限(因此文件仅具有
read
权限)? - 或者仅应用 ACL 权限(因此该文件仅具有
write
权限)? - 或者是否会应用这两种权限(因此该文件将同时具有
read
和write
权限)?
答案1
简短回答
ACL 是传统的超集,因此您不能同时拥有两者(因为传统的是 ACL 的一部分)。
更长的答案。
首先让我们尝试一下。
#> chmod ug-w aab
#> setfacl -m u:me:w aab
#> getfacl aab
# file: aab
# owner: me
# group: me
user::r--
user:me:-w- #effective:---
group::r--
mask::r--
other::r--
那么为什么user:me的ACL无效呢?
为了解释这一点,我们可以看看传统的权限。
如果我们有此处列出的文件
-r---w---- 1 me me 0 Feb 21 09:41 abc
然后我可以读取它,但不能写入它。为什么是这样。
操作系统首先尝试将我与所有者匹配,然后是组,然后是其他人。我和主人很匹配。然后它应用这些权限。然后它不会合并我的组权限。
使用 ACL 时,额外的权限都是组权限的一部分,因此不会供所有者使用。
我认为 ACL 的解析方式是相同的:找到您所在的用户组,然后应用此权限。 (无许可合并)。
如果用户不同
如果我们这样做了#> setfacl -m u:anotherUser:w aab
,那么您的权限将适用,因为首先找到此权限(针对该用户),并应用它。