linux权限是服务器安全第一道防线,chmod(change mode)是修改文件、目录访问权限最核心命令。很多运维新人只会盲敲chmod 777,轻则引发安全漏洞,重则直接导致系统故障。今天一文吃透两种写法、常用参数、实战场景与高危避坑准则。权限被划分为三段:
- u (user) 所有者:文件创建者
- g (group) 用户组:归属用户组内成员
- o (others) 其他人:系统其余所有用户
- a(all):等价 u+g+o,全部用户
权限标识:
r:read读权限w:write写权限x:execute 执行权限
二、两种写法:符号模式和数字八进制模式
方式 1:符号模式(常用)
语法:
运算符:+ 增加权限 | - 移除权限 | = 直接覆盖权限
#给所有者增加执行权限(脚本最常用)chmod u+x start.sh#取消其他所有人的写权限chmod o-w app.conf#给组、其他人添加读+执行chmod go+rx web_dir/#覆盖设置:所有者读写,组只读,其他人无权限chmod u=rw,g=r,o= secret.txt#全部用户增加执行权限chmod a+x run.sh
方式 2:数字八进制模式(熟练运维人员使用)
换算规则:r=4,w=2,x=1,权限数值相加
完整格式:chmod xxx 文件三位数字依次对应:所有者、组、其他人。
运维高频标准权限
#可执行脚本、程序目录chmod 755 app.sh#普通配置文件、日志、静态文本(最通用)chmod 644 nginx.conf#密钥、隐私配置【ssh私钥强制使用】chmod 600 id_rsa#个人私有目录,禁止任何人访问chmod 700 ~/.ssh
三、核心参数详解
批量修改目录+目录内所有子文件、子文件夹权限
#递归设置网站目录权限chmod -R 755 /var/www/html
注意:递归操作谨慎执行,严禁随意对/根目录递归修改
--reference 参考文件权限复制:直接复制已有文件的权限配置,无需手动计算
#将start.sh权限,同步给1.txtchmod --reference=start.sh 1.txt
四、chmod进阶:SUID / SGID / Sticky 粘滞位
linux除基础读写执行权限外,还有三套高级权限:SUID、SGID、Sticky粘滞位。
普通权限:rwx rwx rwx(所有者、所属组、其他用户)
基础数字权限:4 (r)、2 (w)、1 (x)
特殊权限占用第4位(最高位)
格式:特殊位+所有者+组+其他例:4755、2775、1777
1. SUID 设置用户 ID(Set UID)
二进制程序执行时,临时拥有文件所有者的权限, 仅对可执行文件生效,对目录无效。
suid简单的说就是谁拥有这个程序,运行时就拿谁的身份权限,不是拿运行者权限。
如:/usr/bin/passwd
所有者执行位变成s = SUID 已开启(原有 x 权限)
如果显示大写S:代表开启SUID,但文件没有执行权限,权限失效。
#数字方式:4开头,设置SUIDchmod 4755 test.bin#符号方式chmod u+s test.bin#移除SUIDchmod u-s test.bin
SUID风险极高!普通用户运行就能拿到文件属主权限。 生产严禁随意给自定义程序设置 SUID;定期扫描服务器恶意SUID文件:
find / -perm -4000 2>/dev/null
2. SGID 设置组 ID(Set GID)
SGID有两种场景:文件和目录,行为完全不一样!
① 作用在可执行文件
程序运行时,临时拥有文件所属组权限。
② 作用在目录(日常最常用)
目录内新建文件或子目录,自动继承目录的所属组,不用每次chgrp! 适合团队共享目录。
权限标识: 组执行位小写s:开启SGID,具备x权限
大写S:开启SGID,无执行权限,失效
#数字方式 2开头chmod 2775 /share#符号方式chmod g+s /share#取消SGIDchmod g-s /share
共享目录最佳实践:
mkdir /data/devchgrp dev /data/devchmod 2775 /data/dev
3. Sticky Bit 粘滞位
目录开启粘滞位后:用户只能删除自己创建的文件,不能删除别人的文件!
其他用户权限末尾t=粘滞位开启;大写T代表无执行权限,失效。
想象场景:/tmp所有人都能读写,如果没有粘滞位,任意用户可以删掉别人的临时文件,极其危险。
#数字方式 1开头chmod 1777 /home/tmp#符号方式chmod o+t /home/tmp#移除粘滞位chmod o-t /home/tmp
4、三种特殊权限对比
五、运维避坑事项
777=所有用户拥有全部权限,极易引发入侵、文件篡改,线上业务禁止滥用。文件不需要x权限;目录缺少x权限,即便有r权限也无法访问内部文件。文件推荐 644,目录推荐 755,不要统一全部设置 755。- ssh私钥权限过大(大于 600)会导致ssh直接拒绝登录
六、总结
chmod是运维必备的基础命令,日常调试优先符号模式u+x/g-w精准修改;标准化批量部署,统一使用数字权限。遵循最小权限原则,不给多余访问权限,守住linux 服务器第一道安全屏障。如果你觉得文章对你运维工作有帮助,记得点赞加关注。
#运维#linux运维#Linux实战#chmod