linux中删除acl权限需用setfacl命令区分删单个条目(-x)和清空全部(-b),操作前应先用getfacl查看;删用户用u:、删组用g:,默认acl需加-d;-b仅清除扩展acl,保留基础权限;递归操作加-r,建议先用--test测试。

Linux 删除文件或目录的 ACL 权限,主要用 setfacl 命令配合不同选项实现,核心在于区分“删单个条目”和“清空全部 ACL”。操作前建议先用 getfacl 查看当前设置,避免误删。
删除某个用户的 ACL 权限
只移除指定用户(如 alice)在目标文件/目录上的自定义权限,不影响其他 ACL 条目或基础权限:
setfacl -x u:alice file.txtsetfacl -x u:alice /shared/dir
若该用户还设置了默认 ACL(仅对目录生效),需额外加 -d 选项:setfacl -x d:u:alice /shared/dir
删除某个用户组的 ACL 权限
语法结构类似,把 u: 换成 g: 即可:
setfacl -x g:developers project.conf-
setfacl -x d:g:developers /project(同时删默认组权限)
彻底清空所有扩展 ACL 条目
执行后,文件/目录将只保留基础的三类权限(所有者、所属组、其他人),+ 号会从 ls -l 输出中消失:
setfacl -b file.txtsetfacl -b /tmp/data
注意:-b 不影响文件原有所有者、组和权限位(即 rw-r--r-- 这类),只清除所有通过 setfacl -m 添加的额外规则。
递归清理子项 ACL(适用于目录)
若要批量清除整个目录树下的 ACL,加上 -R 选项:
-
setfacl -b -R /var/log/app(清空该目录及所有子文件、子目录的 ACL) -
setfacl -x u:tempuser -R /backup(仅删掉某用户在整棵树上的权限)
执行前建议先测试:setfacl --test -b -R /path,确认操作范围无误再执行。











