用 setfacl -x 可精准移除不合规用户ACL条目,使其回归UGO权限控制;需先 getfacl 确认存在再执行 setfacl -x u:username,避免误删,最后用 getfacl 和 ls -l 验证是否彻底回归。

直接用 setfacl -x 移除不合规用户的 ACL 条目,就能让该用户回归标准 UGO(所有者/组/其他)权限控制体系。关键在于精准定位、避免误删、确认文件系统支持。
确认目标用户ACL确实存在且需移除
先查看当前文件或目录的完整 ACL 设置,确认目标用户是否真有独立条目:
- 运行
getfacl /path/to/file或getfacl /path/to/dir - 在输出中查找类似
user:baduser:r-x或user:tempdev:---的行 - 若未出现该用户,则无需操作;若存在但权限不符合策略(如不该有写权却有
w),就属于“不合规”需清理
执行 -x 删除指定用户ACL
语法简洁明确,只影响该用户条目,不影响其他 ACL 或基础权限:
- 移除单个用户:
setfacl -x u:baduser /path/to/file - 移除目录下所有匹配项(含子项):
setfacl -R -x u:baduser /path/to/dir - 一次删多个用户(用逗号分隔):
setfacl -x u:user1,u:user2 /path - 注意:-x 不会动 mask、default ACL 或 owner/group/other 权限,安全可控
验证是否已回归UGO控制
删除后需检查两点:ACL 是否清干净 + 权限行为是否按预期由 UGO 决定:
- 再运行
getfacl /path,确认输出中不再含user:baduser:行 - 检查是否有残留的
mask::行限制了其他 ACL —— 若已无任何 user/group 条目,mask 实际失效,权限完全由user::、group::、other::三段决定 - 用
ls -l /path查看传统权限位,此时 baduser 的访问行为将严格遵循 other(或其他对应组)的 rwx 设置
补充:若整个ACL体系需彻底退回到纯UGO
当不止一个用户需要清理,或想一并清除所有扩展控制,回归最简模型:
- 一键清空全部扩展 ACL(保留 owner/group/other 基础权限):
setfacl -b /path - 若目录设过默认 ACL(
default:user:),还需单独清除:setfacl -k /path - 执行后
getfacl输出应只剩四行基础项(file、owner、group、other),无 user:、group:、mask:、default: 等扩展字段











