setfacl -x 用于精确删除文件或目录ACL中指定用户或用户组的条目,不带权限值,仅支持u:用户名或g:组名格式,目标必须已存在,否则报错。

setfacl -x 用于从文件或目录的访问控制列表(ACL)中**精确删除指定用户或用户组的条目**,不会影响其他 ACL 规则。关键在于正确指定目标实体(user:xxx 或 group:xxx),且不带权限值。
基本语法与要点
命令格式为:
setfacl -x {u:用户名 | g:组名} 文件或目录
注意:
• -x 后面**不跟权限(如 rwx)**,只跟标识符;
• u: 表示用户(user),g: 表示用户组(group);
• 若用户/组名为空(如 u:: 或 g::),表示删除默认拥有者/所属组的 ACL 条目(较少用);
• 目标必须是当前 ACL 中**已存在**的条目,否则报错 “Operation not supported” 或 “No such user/group”。
常见使用场景与操作示例
- 删除用户
alice对/data/report.txt的自定义 ACL:
setfacl -x u:alice /data/report.txt
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 删除用户组
developers对目录/var/www的 ACL(含其子项需加 -R):
setfacl -x g:developers /var/www
若要递归删除整个目录树中的该组 ACL,加 -R:
setfacl -R -x g:developers /var/www
- 同时删除多个条目(用逗号分隔,不加空格):
setfacl -x u:bob,g:ops /srv/app/config.ini
验证是否删除成功
执行后建议立即检查 ACL 是否更新:
getfacl /path/to/file
观察输出中是否还存在对应 user:xxx: 或 group:xxx: 行。若已移除,说明成功;若仍存在,可能是因为:
- 拼写错误(用户名/组名大小写、是否存在);
- 该条目实际属于默认 ACL(default ACL),需用
default:user:xxx形式删除 —— 此时应使用setfacl -d -x u:xxx dir; - 文件系统未启用 ACL 支持(挂载时缺少
acl选项)。
注意事项
- 删除 ACL 条目不会改变基础权限(即
ls -l显示的 rwx),仅移除扩展控制项; - 对目录使用
-R时,慎用于生产环境,建议先用--test(部分发行版支持)或在小范围测试; - 若提示 “Operation not supported”,请确认文件系统挂载参数含
acl(如mount | grep acl),必要时重新挂载。

















