我的目录中有多个具有以下权限的文件:
#ls -l /var/lib/dir/file1
-rw------- 1 root root 130 Jul 9 11:03 /var/lib/dir/file1
我想允许特定用户写入和读取所有用户,所以我使用了 facl :
setfacl -R -m u:myUser:rwX /var/lib/dir/
这样做之后,目录中的所有文件都得到了 g+rw :
# ls -l /var/lib/dir/file1
-rw-rw----+ 1 root root 130 Jul 9 11:03 /var/lib/dir/file1
当我删除 g-rw 时,我无法使用特定用户访问这些文件,我的权限被拒绝。
有办法处理这个吗?
答案1
更改文件 ACL 与文件权限位设置相关。
ACL 的联机帮助页内容如下:
ACL 条目和文件权限位之间的对应关系
ACL 定义的权限是文件权限位指定的权限的超集。
文件所有者、组和其他权限与特定 ACL 条目之间存在对应关系:所有者权限对应于 ACL_USER_OBJ 条目的权限。如果ACL中有ACL_MASK条目,则组权限对应于ACL_MASK条目的权限。否则,如果 ACL 没有 ACL_MASK 条目,则组权限对应于 ACL_GROUP_OBJ 条目的权限。其他权限对应于 ACL_OTHER_OBJ 条目的权限。
文件所有者、组和其他权限始终与相应 ACL 条目的权限匹配。文件权限位的修改会导致关联的 ACL 条目的修改,而这些 ACL 条目的修改会导致文件权限位的修改。
当您查看在 file1 上发送的 ACL 时,您可以看到以下输出:
# owner: root
# group: root
user::rw-
user:myUser:rw-
group::---
mask::rw-
other::---
注意掩码设置。遮罩设置将反映在组设置中。但是,当您更改文件设置并删除组权限时,您也会更改屏蔽设置,因此用户 myUser 的有效权限是 ---,因为它们被屏蔽了。
您可以进一步阅读这里并根据您想要实现的具体目标更改设置。您无法在不更改权限位的情况下更改 ACL。