添加 Stickybit 而不更改组所有者权限

添加 Stickybit 而不更改组所有者权限

我的目录中有多个具有以下权限的文件:

 #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。

相关内容