我想用设定值dir
为用户组设置权限。我做了这样的事情:
mkdir /Employee
chgrp employeers /Employee
setfacl -m d:g::rwx /Employee
现在,当我尝试创建一个文件(来自该组的成员的用户)时,我收到有关“无权限”的错误。
root@debian:~# ls -la /Employee
all 8
drwxr-xr-x+ 2 root employeers 4096 maj 21 14:50 .
drwxr-xr-x 23 root root 4096 maj 21 14:50 ..
我究竟做错了什么?
答案1
d
是 的缩写default
。默认权限和实际权限是独立的。再次运行 setfacl 命令(不带 )d:
,那么权限应该按需要工作。我假设您想要这两个命令的效果。
的输出getfacl
可以向您建议这个结论,通过
- 显示
default:
展开 - 显示不包含“default”的原始访问控制条目,表明您所做的条目有一些不同。
反过来,+
的输出ls -l
显示存在 ACE,它们允许基本模式之外的访问(标准 POSIX ACE 无法拒绝您所看到的基本模式允许的访问)[1]。在第二个 setfacl 命令之后,您会注意到基本模式更改为rwxrwxr-x
。这是因为employeers
是文件的主要组,并且 setfacl 避免创建重复条目。
[1] Windows 和 NFSv4 ACL 允许拒绝条目。许多人认为这是一个复杂性陷阱,包括 nfs4_acl 的联机帮助页。当然,这意味着 ACL 顺序很重要。显然,Windows GUI 将它们更改为“首选”顺序,首先明确拒绝条目,最后继承条目。