linux运维中acl权限配置核心是用getfacl查看现状、setfacl精准调整;acl补足chmod三层权限不足,支持对非属组用户/组的细粒度控制,并通过mask限制实际权限,default acl实现新文件自动继承。

Linux 运维中配置 ACL 权限,核心是用 getfacl 看清现状,再用 setfacl 精准调整。ACL 不是替代 chmod,而是补足它——当标准的“属主/属组/其他”三层权限不够用时,比如要让某个非属组成员读写目录、或限制某用户仅能读不能删,就得靠 ACL。
看清权限现状:用 getfacl 诊断真实访问能力
ls -l 只显示基础权限(如 rwxr-xr--),但掩盖了 ACL 规则和 mask 的实际影响。getfacl 才是权限真相的“X 光机”:
- 运行
getfacl /path/to/dir查看完整 ACL 结构,包括 user::、group::、other::、user:xxx:、group:yyy:、mask:: 和 default: 条目 - 特别注意 mask:: 行——它是所有扩展权限(user:xxx、group:yyy)的“天花板”,哪怕你设了 u:alice:rwx,若 mask 是 r-x,alice 实际最多只有 r-x
- 对目录,检查是否有 default: 开头的行;没有则新建文件不会自动继承 ACL,协作场景下容易出问题
- 加
-a只看访问 ACL(当前生效项),加-d只看默认 ACL,排查时可分层聚焦
添加或修改单用户/单组权限:用 setfacl -m
给特定用户或组追加独立权限,不改动原有属主、属组,也不影响其他用户:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 给用户 alice 对文件 report.log 读写:
setfacl -m u:alice:rw report.log - 给组 devteam 对目录 /app/logs 读+执行(进目录):
setfacl -m g:devteam:rx /app/logs - 同时设多个条目,用逗号分隔:
setfacl -m u:jenkins:r,u:deploy:rwX /app/release(大写 X 表示“仅对目录或已有 x 的文件加 x”) - 权限字符支持 r、w、x、-,也可用数字如
u:alice:6(等价于 rw-)
设置目录默认 ACL:让新文件自动继承规则
只对目录有效。设了 default ACL 后,后续在该目录里创建的文件/子目录会自动带上对应权限,省去每次手动 setfacl:
- 让新文件默认对 user2 可读:
setfacl -m d:u:user2:r /shared/docs - 让新子目录默认对 group:editors 有读写执行:
setfacl -m d:g:editors:rwx /shared/docs - 默认 ACL 不影响现有内容,只作用于未来创建项;若要同步更新已有项,需额外加
-R
清理与维护:避免权限堆积和冲突
ACL 权限易增难察,长期运行后可能残留无用条目或 mask 失效,导致权限异常:
- 删除某用户权限:
setfacl -x u:olduser /data - 清空所有扩展 ACL(保留基础 owner/group/other):
setfacl -b /data - 删除默认 ACL(不影响现有条目):
setfacl -k /data - 强制重算 mask(常见于增删 ACL 后权限未立即生效):
setfacl --mask -m u:alice:rwx /data或直接setfacl --mask /data










