为什么你的代码在服务器上跑不起来?90%的新手都栽在这三个字母上

那个让你抓狂的 Permission denied
你有没有遇到过这种情况:辛辛苦苦写完的脚本,传到服务器上一跑,啪——
bash: ./run.sh: Permission denied或者更崩溃的:明明昨天还能用的Python脚本,今天就不行了?
这不是你的代码有问题,也不是服务器抽风。真相是:你遇到了Linux世界里最基础也最重要的概念——文件权限。
据统计,超过70%的Linux新手在入职前三个月都曾被 Permission denied 折磨过。今天我们用一篇文章,彻底拿下它。
三个字母统治的世界:r、w、x
打开终端,输入 ls -l,你会看到一堆类似这样的东西:
-rwxr-xr-- 1 user staff 2048 Jun 16 10:30 run.sh别被这一串字母吓到。把它拆成四段就一目了然了:
| 段位 | 内容 | 含义 |
|——|——|——|
| 第1位 | `-` | 文件类型(`-`是普通文件,`d`是目录) |
| 第2-4位 | `rwx` | **文件所有者**的权限 |
| 第5-7位 | `r-x` | **同组用户**的权限 |
| 第8-10位 | `r–` | **其他人**的权限 |
– r (read) = 4:能读取文件内容。对目录来说,意味着能 ls 看到里面有什么
– w (write) = 2:能修改文件。对目录来说,意味着能在里面创建/删除文件
– x (execute) = 1:能执行文件。对目录来说,意味着能 cd 进去
记住这三个数字:**读=4,写=2,执行=1**。这就是文件权限的”九九乘法表”。
一招制胜:chmod 的两种写法
### 符号模式(人类友好版)
chmod u+x run.sh # 给文件主人(u)加上执行(x)权限
chmod g-w secret.txt # 去掉同组用户(g)的写(w)权限
chmod o+r report.pdf # 让其他人(o)也能读(r)
chmod a+x deploy.sh # 给所有人(all)加上执行权限### 数字模式(高手速查版)
把 r(4)+w(2)+x(1) 加起来,三个组各一个数字:
chmod 755 run.sh # rwx(7) + r-x(5) + r-x(5) → 主人全能,别人可读可执行
chmod 644 index.html # rw(6) + r(4) + r(4) → 主人可写,别人只读
chmod 600 ~/.ssh/id_rsa # rw(6) + 无(0) + 无(0) → 只有你能碰!最常用的三个数字组合,背下来够用一辈子:
| 数字 | 含义 | 什么时候用 |
|——|——|———–|
| `755` | 主人全能,别人只读执行 | 脚本、程序 |
| `644` | 主人可写,别人只读 | 普通文件 |
| `600` | 只有主人能读写 | **私钥、密码文件** |
文件是谁的?chown 一句话解决
有时候权限对了但还是报错,那是文件不属于你:
chown ubuntu:ubuntu run.sh # 把文件的主人改成ubuntu,组也改成ubuntu
chown -R ubuntu:ubuntu /var/www/ # 递归改整个目录(-R = 全部子文件一起改)新手最容易踩的三个坑
坑1:chmod 777 一时爽,安全火葬场
777意味着全世界都能读写执行你的文件。除非你确定这个文件就该对全网公开(比如 /tmp 下的临时文件),否则千万别用。尤其是 .env、id_rsa 这些敏感文件——用 600。
坑2:目录需要 x 权限才能 cd 进入
很多人给目录设了 rw 权限却进不去——因为缺少 x。目录的 x 不是”执行”,是”进入”。把这个记在脑子里:
没有r → 看不到目录内容(ls 报错)
没有w → 不能在目录里创建/删除文件
没有x → 进不去这个目录(cd 报错)坑3:sudo 创建的文件属于 root,不是你
用 sudo vim 或 sudo touch 创建的文件,主人是 root。普通用户改不了它。要么用 sudo chown 改回来,要么从一开始就别用 sudo 创建你需要日常编辑的文件。
一张图记住全部
r(4) w(2) x(1)
┌───┬───┬───┐
owner │ ✓ │ ✓ │ ✓ │ = 7
├───┼───┼───┤
group │ ✓ │ │ ✓ │ = 5
├───┼───┼───┤
others │ ✓ │ │ │ = 4
└───┴───┴───┘
chmod 754下一次看到 Permission denied,别慌。先 ls -l 看一眼,再 chmod 搭把手,三秒搞定。
记住一句话:Linux 的权限系统不是来刁难你的——它是保护你的第一道墙。学会了,你就是这堵墙的主人。
— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn
