Linux 文件权限入门:chmod 与 chown 守护你的文件
刚接触 Linux 的新手,常常会被一串 drwxr-xr-x 吓住:这到底是什么?其实它就是 Linux 文件权限的全部秘密。理解了它,你才能知道为什么有的脚本双击就能跑,有的却提示 Permission denied,为什么私钥文件必须设成 600。
一、ls -l 读懂权限
在终端执行 ls -l,每一行开头都有一串 10 个字符,例如:
-rw-r--r-- 1 vanseny vanseny 512 11月 6 06:00 notes.txt
drwxr-xr-x 2 vanseny vanseny 4096 11月 6 06:00 scripts
第 1 位表示类型:- 是普通文件,d 是目录,l 是软链接。后面 9 位分成三组,每组 3 位,依次代表文件属主(user)、属组(group)、其他人(others)的权限。每组里的 r 是可读,w 是可写,x 是可执行,- 是没有该权限。
所以 -rw-r--r-- 的意思是:属主可读写,属组和其他人只可读。drwxr-xr-x 则是目录,属主可读写执行,其他人可读可执行。注意目录的 x 权限代表“可以进入目录、访问里面的文件”,没有它,就算有 r 也看不到目录内容。
二、chmod:改权限有两种写法
最常用的是数字法:r=4,w=2,x=1,三组相加。chmod 755 script.sh 就是属主 7(4+2+1,可读写执行),属组和其他人 5(4+1,可读可执行)。常见的组合要记住:644 是普通文件默认,755 是脚本和目录默认,600 是私钥、密码类敏感文件的标准。
另一种是符号法,更直观:chmod u+x script.sh 给属主加执行权限;chmod g-w notes.txt 收回属组的写权限;chmod o=r notes.txt 把其他人的权限直接设为只读。u/g/o 分别对应三组,a 代表全部。两种写法效果一样,新手建议先练数字法,熟练后再用符号法做微调。
三、chown:改属主和属组
权限管“能干什么”,属主属组管“归谁管”。把文件交给别人负责时用 chown:
sudo chown vanseny:developers report.txt
冒号前是新属主,后是新属组;只写用户名则只改属主。加 -R 可以递归处理整个目录,例如部署网站时把整个站点目录交给 www-data。改属主通常需要 root 权限,所以前面要加 sudo。
四、三个日常场景
第一,让脚本可执行。刚写好的 deploy.sh 直接运行会报 Permission denied,因为新建文件默认没有 x 权限,一条 chmod +x deploy.sh 就够了。
第二,保护私钥。SSH 私钥如果权限太开放,SSH 客户端会直接拒绝使用,并提示权限过松。chmod 600 ~/.ssh/id_ed25519 是标准做法,只让自己可读写。
第三,网站目录。Web 服务需要读取目录和文件,但绝不能让它有写权限,否则一个漏洞就能改掉你的网页。一般目录设 755、文件设 644,上传目录再单独放开。
五、一个忠告:别动不动就 777
遇到权限问题,新手最容易 chmod -R 777 一把梭。777 意味着任何人都能读写执行,等于把家门钥匙贴在门口,服务器一旦被入侵,损失会成倍放大。正确的做法是先用 ls -l 看清现状,缺什么补什么,精确到最小权限。
权限管理没有捷径,但也不神秘:ls -l 看现状,chmod 改权限,chown 改归属,600/644/755 三组数字覆盖九成场景。把这套流程练熟,下次再遇到 Permission denied,你就知道该查哪里、该改什么了。
- 点赞
- 收藏
- 关注作者
评论(0)