目录的x权限是访问其内容的关键开关,单独r权限只能读取文件名映射表,无法stat文件、打开文件或进入目录;真正列出并使用内容需r-x组合,其中x提供inode路径访问能力。

目录的 x 权限不是“执行”字面意思,而是“可进入、可访问其内容”的关键开关。它和 r(读)权限配合,才构成完整列表能力;单独有 r 却没 x,只能看到文件名,却无法查看属性、打开文件或进入子目录。
为什么只有 r 权限的目录不能真正“列出内容”?
目录本质是一个特殊文件,存储的是“文件名 → inode”的映射表。r 权限只允许读取这张表的“名字部分”,但不提供访问对应 inode 的路径能力——而 x 正是打开这条路径的钥匙。
- 执行
ls dir:能显示文件名(靠 r) - 执行
ls -l dir:失败,报Permission denied(缺 x,无法 stat 每个文件) - 执行
cat dir/file.txt:失败,即使你知道文件名(缺 x,无法解析路径) - 执行
cd dir:失败(x 是进入目录的必要条件)
真正能“列出并使用目录内容”的最小权限组合
日常操作中,仅靠 r 或仅靠 x 都不够实用。常见有效组合如下:
-
r-x:最常用。可
ls、ls -l、cd、cat子文件(前提是子文件本身有对应权限) - rw-:无效组合——没有 x,w 不生效。无法创建/删除任何文件,因为写目录需先“进入”该目录空间
-
-wx:极少见。不能
ls看名字,但若已知某文件名(如通过其他途径获知),可rm或touch它(x 提供路径访问,w 提供修改能力)
递归设置时,为什么推荐用大写 X 而非小写 x?
在批量修改目录树权限时(如 chmod -R 755 /data),若直接用 x,普通文件也会被加上执行位,带来安全风险(如文本配置文件意外可执行)。X 是智能执行位:
- 对目录:总是添加 x(保证可进入)
- 对普通文件:仅当它原本已有 x 权限时才保留,否则不加
- 命令示例:
chmod -R 750 /shared && chmod -R g+X /shared,确保组内成员可进可查,又不误开脚本以外的执行权限
排查目录无法访问的典型检查顺序
遇到 Permission denied 进不了目录或看不到内容,按此顺序快速定位:
- 确认当前用户是否为目录所有者、是否属于目录所属组、是否落入 other 范围
- 用
ls -ld /path/to/dir查看目录自身权限(注意是-ld,不是-l) - 检查父目录链上每一级是否都有 x 权限(例如访问
/a/b/c,/a 和 /a/b 也必须有 x) - 确认没有 SELinux 或 ACL 规则额外限制(可用
ls -Z和getfacl辅助判断)


















