ls -l前十个字符:类型 + owner/group/others 各三位 rwx。
约 1202 字大约 4 分钟
2026-05-14
ls -l 那串 -rw-r--r-- 是 Linux 里最常见、也最常被误读的信息。它回答的是“谁,能对这个文件做什么”。把这十个字符拆开看懂,再理解“目录的权限和文件不是一回事”,绝大多数 Permission denied 就能自己解释。
读懂 rwx 三组权限、owner/group/others 三类身份,重点理解目录的 x 权限和“改文件名看目录权限”这两个反直觉点。
ls -l前十个字符:类型 + owner/group/others 各三位 rwx。
chmod 640 file6=rw- 给属主,4=r-- 给组,0 给其他人。
chmod u+x file给属主加执行位,不动其他位,比数字法更精准。
chown user:group file改文件的属主和属组,常用于修正服务读不到文件。
-rw-r--r--第一个字符是文件类型(见 Linux 文件类型),后面九个字符是三组权限:
- rw- r-- r--
│ │ │ └─ others:其他所有人
│ │ └────── group:属组成员
│ └─────────── owner:文件属主
└─────────────── 文件类型每组三位是 r(读)、w(写)、x(执行)。系统判断时只匹配一组:你是属主就只看属主那三位,是属组成员就只看组那三位,都不是就看 others——不会叠加。
chmod 640 这种数字怎么来的:r=4、w=2、x=1,每组相加:
| 数字 | 权限 | 含义 |
|---|---|---|
| 7 | rwx | 读写执行 |
| 6 | rw- | 读写 |
| 5 | r-x | 读和执行 |
| 4 | r-- | 只读 |
| 0 | --- | 无权限 |
所以 640 = 属主 rw-、属组 r--、其他人 ---,是配置文件的常见权限。脚本常用 755(人人可执行,只有属主可改)。
这是最容易栽跟头的地方:
x:能否把它当程序运行x:能否“进入/穿过”这个目录(cd 进去、访问里面的文件)一个目录如果没有 x,哪怕里面的文件是 rw-,你也访问不了——因为你根本“穿不过去”。排查“文件可读却打不开”时,要用 namei -l /full/path/to/file 检查路径上每一层目录的权限,而不只是文件本身。
另一个反直觉点:你能不能删除一个文件,取决于你对它所在目录有没有 w 权限,和文件本身的权限无关。因为“删除文件”本质是修改目录这张映射表(见 inode、硬链接与软链接)。
这就是为什么 /tmp 里别人创建的文件你也可能删得掉——除非目录设了 sticky bit,见 umask 与特殊权限位。
chmod 777 和递归操作要克制
chmod 777 等于“人人可读写执行”,几乎从不是正确答案——它常常只是掩盖了真正的归属问题,正确做法多半是 chown 改归属或精确加某一位。递归的 chmod -R、chown -R 杀伤力极大:动手前先 pwd 和 ls 确认路径,对着 / 或家目录跑一次递归就可能让系统无法登录。
| 误区 | 更稳妥的做法 |
|---|---|
遇到 Permission denied 就 chmod 777 | 先看是归属问题还是权限位问题,多半该 chown |
| 只检查文件权限,忽略路径上的目录 | 用 namei -l 检查整条路径每层目录的 x 权限 |
| 以为删不了文件是文件权限不够 | 增删文件看的是所在目录的 w 权限 |
随手 chmod -R / chown -R | 先确认路径,递归操作对错目录可能毁掉系统 |
版权归属:Shuo Liu