我已运行以下脚本来设置 /etc/nginx 的权限
#!/usr/bin/env bash
sudo chown -R root:root /etc/nginx
sudo chmod -R 0750 /etc/nginx
sudo setfacl -Rbk -m g:baa:rwx /etc/nginx
sudo setfacl -R --mask -m g:www-data:rx /etc/nginx
ls -al
但是,当我事后检查权限时,发现“组”的结果存在差异getfacl
$ ls -al /etc/nginx
total 24
drwxrwx---+ 5 root root 4096 Mar 18 17:07 .
$ getfacl /etc/nginx
getfacl: Removing leading '/' from absolute path names
# file: etc/nginx
# owner: root
# group: root
user::rwx
group::r-x
group:www-data:r-x
group:baa:rwx
mask::rwx
other::---
为什么?
答案1
您看到的ls
是mask
ACL 的条目。从 来看man setfacl
,该mask
条目似乎反映了可以在 ACL 条目上设置的最大可能权限。
进一步调整掩码条目的权限,使其包括受掩码条目影响的所有权限的并集
您在示例中看到的ls
默认组的访问权限root:rwx
是错误的,因为有效权限现在由 ACL 控制。