ls -l 输出末尾的 + 号仅表示文件启用了 ACL,权限字段仍为固定 10 字符,未真正变长;视觉“变长”实因用户名、时间格式等字段对齐变化所致。

ls -l 输出变长,不是因为“ACL 权限过多”本身让格式拉长,而是当文件或目录设置了 ACL(访问控制列表)后,ls -l 会在权限字段末尾多显示一个 + 号,比如:
-rw-r--r--+ 1 alice devteam 1234 Mar 15 10:23 config.yaml
这个 + 是唯一由 ACL 引起的视觉变化,它不改变字段数量,也不让整行“变长”,但很多人误以为是“输出变长”,其实是注意到了这个加号,进而怀疑 ACL 导致了异常——其实它只是个标记。
怎么确认是不是 ACL 引起的 + 号
执行以下命令检查目标文件是否有 ACL:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
getfacl filename—— 若返回非空结果(含 user:xxx、group:xxx 或 mask 行),说明有 ACL -
ls -l filename | cut -d' ' -f1—— 看第一个字段是否以 + 结尾 -
stat filename—— 查看 Access: 行,若显示0755 (drwxr-xr-x+)中的 +,即表示启用了 ACL
为什么 + 号容易被当成“格式变长”
原因在于:ls -l 的权限列固定为 10 字符(如 -rw-r--r--),加了 ACL 后仍是 10 字符,但最后一位变成 + 而非 -,例如:
- 无 ACL:
-rw-r--r--(10 字符,末位是 -) - 有 ACL:
-rw-r--r--+(仍是 10 字符,末位是 +)
真正让人感觉“变长”的,往往是后续字段因对齐错位产生的视觉偏差——比如属主名变长、时间格式从 Mar 15 变成 Sep 16 10:32(年份省略 vs 显示年份),这些和 ACL 无关,是 ls 自动适配的显示逻辑。
排查时别踩的坑
- 不要用
ls -l | wc -L比较行长:终端宽度、tab 展开、locale 排序都会干扰 - 别误删 ACL:执行
setfacl -b file会清除所有 ACL,可能破坏服务依赖(如 Web 服务器需要特定用户读取日志) - + 号不等于权限异常:它只表示“扩展权限存在”,实际生效权限要看
getfacl输出中的 mask 和各条目交集
本质上,ACL 不会让 ls -l “变长”,它只加一个 + 标识。真要排查显示异常,优先看字段对齐、时间格式切换、用户名长度变化这些更常见的因素。










