getfacl 是查看文件或目录 ACL 权限的命令,显示传统 rwx 外的用户/组特殊权限、mask 和默认 ACL;若 ls -l 末尾有 +,则表明已设置 ACL。

getfacl 就是用来查看文件或目录上附带的 ACL(访问控制列表)权限的专用命令,它能清晰展示传统 rwx 之外的复杂多用户特殊权限,比如单独给某个用户、某个组设置的读写执行权限,以及默认 ACL、掩码(mask)等关键信息。
getfacl 查看 ACL 权限的基本用法
直接运行:
getfacl 文件名或目录名
输出会包含:
- 文件路径、所有者、所属组
-
user::(文件所有者的权限) -
group::(文件所属组的权限) -
other::(其他用户的权限) -
user:用户名:(额外添加的特定用户权限) -
group:组名:(额外添加的特定组权限) -
mask::(实际生效的最大权限边界,ACL 权限不能超过 mask) -
default:开头的行(仅目录有,表示新建文件/子目录将继承的默认 ACL)
✅ 提示:如果
ls -l显示权限末尾有个+(如drwxr-xr-x+),说明该文件/目录已设置了 ACL,getfacl必然能查出扩展条目。
常用选项帮你聚焦关键信息
| 选项 | 作用 | 示例 |
|---|---|---|
-a 或 --access
|
只显示访问控制列表(即当前生效的 ACL 条目) | getfacl -a /data/report.txt |
-d 或 --default
|
只显示默认 ACL(只对目录有效) | getfacl -d /shared |
-c 或 --omit-header
|
不显示注释头(# file / # owner 等),适合脚本解析 | getfacl -c /tmp/config.conf |
-n 或 --numeric
|
用 UID/GID 数字代替用户名/组名,避免解析失败 | getfacl -n /var/log/app.log |
-R |
递归查看整个目录树(慎用,大量文件时输出很长) | getfacl -R /project/src \| head -20 |
实际输出解读示例
$ getfacl /home/alice/project # file: home/alice/project # owner: alice # group: devteam user::rwx user:bob:r-x group::r-x group:qa:rw- mask::rwx other::--- default:user::rwx default:user:charlie:--- default:group::r-x default:mask::r-x default:other::---
说明:
-
user:bob:r-x→ 用户 bob 对该目录有读+执行权限(可进入、列出内容) -
group:qa:rw-→ 组 qa 有读+写权限(可在目录内新建/修改文件) -
mask::rwx→ 所有 ACL 条目的实际生效上限是 rwx(当前未限制) -
default:开头的行 → 新建在该目录下的文件/子目录会自动继承这些默认权限 -
user:charlie:---在 default 中设为无权限 → 新建文件对 charlie 默认不可访问
小技巧:快速确认是否有 ACL 权限
不用翻完整输出,可用管道过滤:
getfacl /path | grep -E '^(user|group):[a-zA-Z0-9]+:' # 查看非基础的 ACL 条目 getfacl /path | grep 'mask::' # 检查是否受 mask 限制 getfacl /path | grep '^default:' # 看有没有默认 ACL
不复杂但容易忽略

















