getfacl是查看文件acl权限的专用命令,输出包含基础权限、acl条目(如user:alice:rw-)和mask行(决定实际生效权限),不加参数仅显示目标文件/目录自身acl,递归需-r,且mask限制实际权限有效性。

用 getfacl 查看文件 ACL,不是 ls -l 或 ls
ls -l 只能告诉你权限串末尾有没有 +(表示存在 ACL),但看不到具体谁有什么权限。真正要查 ACL 内容,必须用 getfacl。
- 直接运行
getfacl,输出包含三块:基础权限(user/group/other)、ACL 条目(如user:alice:rw-)、mask 行(决定哪些 ACL 权限实际生效) - 如果文件没设 ACL,
getfacl仍会输出基础权限,但不会列出额外的user:或group:行 - 别误输成
getacl、gotfacl或acl—— 这些命令不存在,shell 会报command not found
getfacl 递归查看目录时加 -R,但要注意输出量
对目录查 ACL,不加参数只显示目录本身的 ACL,子文件/子目录的权限不会出现。
- 加
-R参数:getfacl -R /path/to/dir,会逐个列出该目录下所有文件和子目录的 ACL - 输出可能很长,尤其目录层级深或文件多时;可配合
less或重定向到文件:getfacl -R /data > acl_backup.txt - 若只想看“有 ACL 的项”,得靠后续过滤(比如
getfacl -R /dir | grep "^# file:" -A 5 | grep -E "(user:|group:)"),getfacl本身不提供“仅显示非空 ACL”的开关
看到 mask::--- 或权限不生效?那是 mask 没更新
ACL 权限是否真起作用,取决于 mask 行。即使你用 setfacl -m u:tom:rwx 设了权限,如果 mask 是 mask::r--,tom 实际只有读权限。
-
getfacl输出里一定有一行形如mask::rwx或mask::r-- - mask 由系统自动计算,但有时滞后;手动刷新可用
setfacl --recompute-mask(部分系统支持),更通用的做法是再执行一次setfacl -m m::rwx显式设置 mask - 常见现象:加了 ACL 却没效果,
getfacl显示权限条目存在但 mask 限制太严 —— 这是第一排查点
ACL 不是“设完就完事”的机制,getfacl 输出里的 mask 和 effective 字段才是权限是否落地的关键信号,容易被忽略。











