Linux权限管理:chmod/chown详解(我用了10年的经验)
Linux 权限很重要,搞不懂会出大问题。我用了 10 年 Linux,踩过很多权限的坑,这篇是我整理的最全的权限管理指南。
一、Linux 权限基础
Linux 文件权限分三种:
权限 | 数字 | 对文件 | 对目录 |
读(r) | 4 | 可以看内容 | 可以列目录内容 |
写(w) | 2 | 可以修改内容 | 可以在目录里创建/删除文件 |
执行(x) | 1 | 可以运行 | 可以进入目录 |
每组权限分三类:
- 所有者(user):文件的主人
- 所属组(group):文件所属的组
- 其他人(others):其他所有人
二、怎么看权限?
用
ls -l 看文件权限:解释:
-:文件类型(- 是文件,d 是目录)
rw-:所有者权限(读+写)
r--:所属组权限(只读)
r--:其他人权限(只读)
user:所有者
group:所属组
三、chmod 命令(改权限)
1. 数字方式(最常用)
把 rwx 转换成数字:
- r = 4
- w = 2
- x = 1
加起来就是权限值:
- 7 = 4+2+1 = rwx(读写执行)
- 6 = 4+2 = rw-(读写)
- 5 = 4+1 = r-x(读执行)
- 4 = 4 = r--(只读)
常用权限值:
权限 | 数字 | 适用场景 |
755 | rwxr-xr-x | 可执行脚本、目录 |
644 | rw-r--r-- | 普通文件、配置文件 |
600 | rw------- | 私密文件(比如密钥) |
777 | rwxrwxrwx | 所有人都能读写执行(⚠️ 危险,尽量不要用) |
2. 字母方式
四、chown 命令(改所有者)
什么时候用?
- 你把文件复制到另一个用户的目录,要改所有者,不然他读不了
- Nginx 跑网站,网站目录的所有者要改成 www,不然 Nginx 读不了
五、实战:网站目录权限怎么设?
这是我常用的网站目录权限:
为什么这么设?
- 目录要 755:要能进入目录,能列文件
- 文件要 644:要能读,但是不能随便改
- 所有者是 www:Nginx 用 www 用户跑,要能读文件
六、特殊权限(了解一下就行)
1. SUID
让用户以文件所有者的权限运行文件。
2. SGID
在目录里创建的文件,继承目录的组。
3. Sticky Bit
只有文件所有者才能删文件,其他人不能删。
(/tmp 目录就是这样,所有人都能写,但是只能删自己的文件)
七、踩坑提醒
- 不要随便用 777:777 是所有人都能读写执行,非常危险,别人能改你的文件
- 目录要加 x 权限:目录没有 x 权限,就进不去,即使有 r 权限
- 递归要小心:
chmod -R会改目录里所有文件,一定要小心
- 注意权限继承:新建的文件权限是按系统默认的,不一定是你想要的
- 密钥文件要 600:SSH 密钥、SSL 私钥,一定要 600,不然会报错
八、我的常用权限
场景 | 权限 | 所有者 |
网站目录 | 755(目录)、644(文件) | www |
脚本文件 | 755 | root |
配置文件 | 644 | root |
SSH 密钥 | 600 | user |
日志文件 | 644 | root |
你有没有遇到过权限的坑?欢迎在评论区分享~
- 作者:墨殇个人博客
- 链接:https://moshang.eu.org/article/3fcdeb47-39da-8193-a0c4-cc43bdd57121
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
