目录的x权限是进入前提,缺x则cd失败且ls受限;r仅列文件名,w允许增删改但需x配合;典型误配如r--目录无法ls或cd,rw-目录mkdir失败。

Linux 目录权限的核心在于“谁可以对什么做哪种操作”,而执行权限(x)在目录场景下有特殊含义——它不表示“运行”,而是“能否进入该目录”。很多权限问题其实卡在这一步:用户能列出目录内容(r),却进不去(缺x);或者能进去(x),却看不到里面文件(缺r)。
目录的 r、w、x 各自起什么作用
对目录而言,三类权限的作用和文件不同:
-
r(读):允许使用
ls查看目录内有哪些文件或子目录(仅列表,不涉及内容) - w(写):允许在目录中创建、删除、重命名文件或子目录(注意:删除文件实际取决于目录的 w 权限,而非文件自身的权限)
-
x(执行):允许使用
cd进入该目录,也影响能否访问其下文件的元数据(如stat);没有 x,即使有 r 也无法ls成功
常见误配与典型后果
以下组合在生产中高频出错:
-
r--目录:看似可读,实则无法ls或cd—— 缺 x 导致被拒绝访问 -
rw-目录:能修改但进不去,mkdir失败,ls报 Permission denied -
---目录:所有操作均被拒,连ls -d(只查目录自身)都可能失败(取决于父目录权限) -
rwxr-x---:所有者全权,同组可进可看,其他人完全隔离——适合敏感项目根目录
如何安全设置 Web 上传目录
以 /var/www/example.com/uploads 为例,需兼顾 Web 进程写入与防执行风险:
- 设权限为
770(rwxrwx---),确保组内成员和 Web 用户(如 www-data)都能读写 - 加
chmod g+s开启 SGID,使新创建文件自动继承目录所属组,避免权限漂移 - 禁用执行权限:用
find uploads -type f -exec chmod -x {} \;清除所有文件的 x 位,防止上传恶意脚本被执行 - 配合 ACL 给 Web 进程单独授权:
setfacl -m u:www-data:rwx uploads,不依赖组身份也能生效
执行权限限制的关键逻辑
目录的 x 权限是访问链上的“门禁开关”:
- 要访问
/a/b/c.txt,路径上/a、/a/b都必须有 x 权限,否则直接中断 - 只要中间任一目录缺 x,即使目标文件权限是 777,
cat /a/b/c.txt也会报 Permission denied - 粘滞位(
+t)常用于公共上传目录(如/tmp),确保用户只能删自己创建的文件,不影响 x 的基础作用











