getfacl是Linux中专用于查看文件/目录ACL权限的命令,能完整展示用户ACL、组ACL、默认ACL、掩码及传统权限映射;而ls -l仅在权限末尾显示+号提示ACL存在,无法显示具体规则。

直接用 getfacl 命令查看,这是专为读取 ACL 设计的工具,能完整展示所有扩展权限细节。
为什么不能只靠 ls -l?
ls -l 只能在权限字符串末尾显示一个 +(比如 -rw-r--r--+ ),表示该文件或目录设置了 ACL,但完全不告诉你具体有哪些用户、组、默认规则或掩码配置。它只反映传统 u/g/o 权限,ACL 是额外叠加层,必须用专用命令才能看见。
getfacl 的基本用法
语法极简,无需复杂参数:
- 查单个文件或目录:getfacl filename 或 getfacl /path/to/dir
- 查多个目标:getfacl file1 dir1 file2
- 查通配符匹配项:getfacl *.log
- 查目录的默认 ACL(仅对目录有效):getfacl -d /shared/dir
- 去掉输出里的注释头(适合脚本处理):getfacl -c filename
输出内容怎么看?
典型输出包含几块关键信息:
- # file: 显示路径(自动去前导/,加 -p 可保留)
- # owner / # group: 属主和属组,确认权限生效对象
- user::rwx —— 所有者的基础权限
- group::r-x —— 所属组的基础权限
- other::r-- —— 其他用户的权限
- user:alice:rw- —— 用户 alice 的自定义 ACL 权限
- group:devs:r-x —— 组 devs 的自定义 ACL 权限
- mask::rwx —— 实际生效的最大权限掩码(ACL 权限不会超过它)
- default:user::rwx 等行 —— 如果存在,说明该目录设置了默认 ACL,新创建的子项会继承
配合 stat 和 ls -l 一起看更准
ACL 是权限体系的一部分,不是孤立存在:
- 先用 ls -ld 目录名 确认目录自身权限和属主属组是否合理
- 再用 stat filename 查八进制权限(如 0644)、inode、时间戳等底层信息,排查是否被 chown/chmod 影响过
- 最后用 getfacl 看 ACL 是否启用、谁被额外授权、是否有默认规则


















