ls -l 输出中目录权限字段首字符为“d”,后9位分三组,每组对应所有者、所属组、其他人的r(读)、w(写)、x(执行)权限;对目录而言,r允许ls查看内容,x允许cd进入及访问文件元数据,w允许增删改目录内文件。

ls -l 输出中目录权限字段怎么看
执行 ls -l 时,目录行开头是 d(比如 drwxr-xr-x),说明这是个目录;后面9位分三组,每组3字符,分别对应所有者(user)、所属组(group)、其他人(other)的权限。
关键点在于:对目录而言,r不等于能进入,x不等于能列出内容——两者必须配合才完整可用。
-
r(读):允许用ls查看该目录下有哪些文件/子目录(但不能cd进去,也不能访问其中文件的元数据) -
w(写):允许在该目录中创建、删除、重命名、移动任意文件或子目录(注意:删文件不看文件自身权限,只看目录是否有w) -
x(执行):允许cd进入该目录,也允许访问其中文件的属性(如ls -l filename)、执行可执行文件、读取软链接目标等
例如 drw-r--r--:所有者能 ls、不能 cd、不能删里面任何东西(缺 x);而 d-wx-wx-wx 表示谁都不能 ls,但只要知道文件名就能 cd、cat、rm —— 这种权限组合极少见,但确实合法。
为什么 chmod 755 是目录常用权限
755 对应 rwxr-xr-x,是目录部署中最稳妥的默认值之一。它不是“最安全”,而是平衡了可用性与最小暴露面:
- 所有者有全部权限(
rwx),方便管理 - 组和其他人只有
r和x,意味着他们可以ls列出内容、cd进入、访问已知路径下的文件,但不能新建或删改 - 没有
w就杜绝了误删/覆盖风险,尤其对/var/www、/etc下的配置目录很关键
反例:chmod 777 给目录 → 任何人可删你整个项目;chmod 700 → 其他人连 ls 都看不到,协作或 Web 服务常因此 403 报错。
chmod 数字模式和符号模式别混用
数字模式(如 chmod 755 dir)直接设三组权限,简单粗暴;符号模式(如 chmod g+w dir)是增量修改,更精准但容易误判当前状态。
- 用数字模式前,先跑一遍
ls -ld dir确认当前权限,避免覆盖掉本不该动的位(比如误把750改成755暴露给 others) - 符号模式适合局部调整:
chmod o-x dir去掉其他人的执行权(禁止cd),chmod u+s dir设置 setuid(极少用于目录,慎用) - 递归改目录权限务必加
-R,但注意:chmod -R 755 dir会把里面所有文件也设成可执行 —— 文件不该有x权限,应分开处理:先find dir -type d -exec chmod 755 {} \;,再find dir -type f -exec chmod 644 {} \;
常见权限错误导致的典型问题
很多“找不到文件”“拒绝访问”其实不是路径错,而是权限卡在目录层级上:
-
cd: permission denied→ 当前用户对某一级父目录缺少x权限(哪怕目标目录本身是777,上层没x也进不去) -
ls: cannot open directory xxx: Permission denied→ 缺r或缺x(r不足无法列内容,x不足连目录结构都不可访问) - Web 服务返回 403 → Apache/Nginx 用户(如
www-data)对网站根目录缺少x权限,或对.htaccess所在目录缺少r -
rm: cannot remove 'xxx': Permission denied→ 不是文件只读,而是你对文件所在目录没有w权限(删动作由目录控制)
查问题时别只盯目标文件,用 namei -l /path/to/file 可逐级显示每一级目录的权限和所有者,快速定位哪一层断了链。


















