Linux 的权限模型简洁但严谨,是系统安全的基石。理解它,才能避免"权限不够"和"权限过大"两类问题。
一、基本权限
每个文件对三类用户分别设置权限:所有者(u)、所属组(g)、其他人(o)。权限有三种:读(r=4)、写(w=2)、执行(x=1)。
$ ls -l
-rw-r--r-- 1 nginx nginx index.html
↑↑↑↑↑↑↑↑↑↑
所有者:rw 组:r 其他人:r
二、数字表示法
把 rwx 对应的 4/2/1 相加:
7= 4+2+1 = rwx(全权限)6= 4+2 = rw-(读写)5= 4+1 = r-x(读和执行)4= r--(只读)
所以 chmod 755 dir = 所有者 rwx,组和其他人 r-x。目录通常需要 x 权限才能进入。
三、字母表示法
chmod u+x file # 所有者加执行权限
chmod g-w file # 组去掉写权限
chmod o=r file # 其他人只读
chmod a+r file # 所有人加读权限(a=all)
四、递归修改
chmod -R 755 /var/www # 目录及子内容都改
chown -R nginx:nginx /var/www # 改所有者和组
五、特殊权限位
- setuid(4xxx):执行时以所有者身份运行,如
passwd命令 - setgid(2xxx):目录下新文件继承组
- sticky(1xxx):
/tmp用,只能删自己的文件
安全原则:权限最小化。能用 644/755 就别用 777,777 是常见的安全漏洞来源。
六、小结
Linux 权限看似简单,细节很多。记住数字表示法的算法(4/2/1 相加)和最小权限原则,日常运维就够用了。