Linux文件权限rwx直接决定读写执行能力,ls -l的10字符中第1位为类型,后9位每3位分属用户/组/其他人;目录需x才能cd进入,r仅允许ls列出内容。

Linux 文件权限里的 rwx 不是“记个口诀就能用”,而是直接决定你能不能读文件、改配置、进目录、跑脚本。搞错一个字母,chmod 就可能让你自己都进不去自己的项目目录。
ls -l 输出里那10个字符怎么拆解
执行 ls -l 看到类似 -rwxr-xr-- 这样的字符串,前1位是文件类型,后9位才是权限,每3位一组:
-
-开头:普通文件;d开头:目录;l开头:软链接 - 第2–4位(如
rwx):文件所有者(user)权限 - 第5–7位(如
r-x):所属组(group)权限 - 第8–10位(如
r--):其他用户(others)权限
注意:r 对目录 ≠ 对文件 —— 目录有 r 才能 ls 列出内容,但没 x 就连 cd 都进不去,哪怕你能看到它。
chmod 用数字模式时为什么是 755 而不是 777
数字模式本质是三组二进制转八进制:r=4、w=2、x=1,相加得单组值。常见组合:
-
7 = rwx(4+2+1),全开 -
6 = rw-(4+2+0),可读写但不可执行 —— 普通配置文件常用 -
5 = r-x(4+0+1),可读可执行但不可写 —— 脚本或可执行文件给组/其他人时常用 -
0 = ---,彻底拒绝
所以 chmod 755 myscript.sh 表示:所有者全权,组和其他人只能读和执行 —— 安全又实用;而 777 是把写权限开放给所有人,一旦该文件在 web 目录下,可能被恶意覆盖或注入。
chmod 符号模式里 u/g/o/a 和 +/-/= 的实际效果
符号模式更精准,适合局部调整,比如只加执行权、只去写权:
-
u+x:给所有者加执行权限(不碰组和其他人的权限) -
go-w:去掉组和其他人的写权限(保留读和执行) -
a=r:所有人权限重置为只读(等价于chmod 444) -
g=u:让组权限跟所有者完全一致(不用重复算数字)
容易踩的坑:chmod u+x script.sh 如果原本没 x,会加上;但如果已经带 x,再执行一遍不会报错也不会改变 —— 但它不会自动补 r,哪怕你其实需要可读可执行。所以别假设“加 x 就能运行”,先 ls -l 确认当前状态。
目录的 rwx 权限和文件的 rwx 权限含义完全不同
这是最常混淆的一点。对目录来说:
-
r:能用ls列出里面有哪些文件(但不一定看得见内容) -
w:能在该目录下创建、删除、重命名文件(哪怕你对那个文件本身没w) -
x:能cd进入,也能通过路径访问其下的子文件(比如cat ./dir/file.txt)
典型反例:chmod 600 /home/user/mydir(即 rw-------)—— 所有者有读写,但没 x!结果是:你能 ls 它(因为有 r),但 cd mydir 会报 Permission denied。真正要进目录,x 缺一不可。

















