在 Linux 里,权限不是“有点复杂”的背景知识,而是系统能否正常工作、脚本能否执行、目录能否进入的基础开关。
看懂 ls -l 里那串字符,
你就已经掌握了 80% 的权限排查思路。
这篇文章不只讲“rwx 是什么”,还会把
754、
chmod +x、
chmod u=rw,g=r,o=
这些最常用的写法串成一条完整链路。
终端里最常见的权限展示来自 ls -l。
例如下面这行:
Terminal
# 查看权限
$ ls -l demo.sh
-rwxr-xr-- 1 codex staff 0B demo.sh
最前面的 - 是文件类型,
后面的 9 位才是权限本体。它们按 3 位一组,依次对应:
所有者、所属组、其他人。
r = read,读取内容。
w = write,修改内容。
x = execute,执行文件;如果对象是目录,则表示可以进入目录。
数字权限的本质,是把三种能力换成位权:r=4、
w=2、
x=1。
所以:
rwx=7,
r-x=5,
r--=4,
组合起来就是 754。
Terminal
# 给脚本设置经典的 754 权限
$ chmod 754 demo.sh
# 验证结果
$ ls -l demo.sh
-rwxr-xr-- 1 codex staff 0B demo.sh
你会发现,chmod 754
和 rwxr-xr--
其实就是同一件事的两种表达。
对脚本来说,+x 是“允许执行”;
对目录来说,x 是“允许进入”。
这也是为什么调试目录权限时,先看 ls -ld 往往比只看 ls -l 更直接。
Terminal
# 看目录权限
$ ls -ld demo-dir
drwxr-x--- 2 codex staff 64B demo-dir
# 让脚本可执行
$ chmod +x demo.sh
# 再看一次
$ ls -l demo.sh
-rwxr-xr-- 1 codex staff 0B demo.sh
数字写法适合“一步到位”,符号写法适合“按用户类型精修”。常见三类目标是:
u(所有者)、
g(所属组)、
o(其他人)。
Terminal
# 精确设置权限
$ chmod u=rw,g=r,o= demo.txt
# 验证结果
$ ls -l demo.txt
-rw-r----- 1 codex staff 0B demo.txt
如果你只想给脚本补一个执行位,也可以直接用 chmod +x。
这比重新写一遍完整数字权限更安全,也更不容易误伤现有权限。
很多排障会把 chmod、
chown、
umask 混在一起。
其实它们的职责很清楚:
- chmod:改“能做什么”
- chown:改“归谁管”
- umask:决定“新文件默认先少哪些权限”
Terminal
# 查看当前 umask
$ umask
0022
最后记住这条排查顺序
先看 ls -l,
再拆 rwx,
需要时用 chmod 754 或 chmod +x,
真正涉及归属再考虑 chown。