当前位置:首页>Linux>Linux运维干货|chmod命令完整详解,权限设置不再踩坑

Linux运维干货|chmod命令完整详解,权限设置不再踩坑

  • 2026-09-03 17:29:02
Linux运维干货|chmod命令完整详解,权限设置不再踩坑
linux权限是服务器安全第一道防线,chmod(change mode)是修改文件、目录访问权限最核心命令。很多运维新人只会盲敲chmod 777,轻则引发安全漏洞,重则直接导致系统故障。今天一文吃透两种写法、常用参数、实战场景与高危避坑准则。
一、linux的基础权限模型
在目录中执行ls -l查看文件权限,如下命令:
cd /data/ceshi/ls -l

权限被划分为三段:

  • u (user) 所有者:文件创建者
  • g (group) 用户组:归属用户组内成员
  • o (others) 其他人:系统其余所有用户
  • a(all):等价 u+g+o,全部用户

权限标识:

  • r:read读权限
  • w:write写权限
  • x:execute 执行权限
关键区分
  • 文件x权限:能够运行脚本和程序
  • 目录x权限:必须拥有才能进入、访问目录内部文件

二、两种写法:符号模式和数字八进制模式

方式 1:符号模式(常用)

语法:

chmod [角色][运算符][权限] 文件

运算符:+ 增加权限 | - 移除权限 | = 直接覆盖权限

#给所有者增加执行权限(脚本最常用)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,权限数值相加

权限组合
计算结果
标识
rwx
4+2+1
7
rw-
4+2
6
r-x
4+1
5
r--
4
4
---
-
0

完整格式: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位(最高位)

  • SUID=4
  • SGID=2
  • Sticky=1

格式:特殊位+所有者+组+其他例:4755、2775、1777

1. SUID 设置用户 ID(Set UID)

二进制程序执行时,临时拥有文件所有者的权限, 仅对可执行文件生效,对目录无效。

suid简单的说就是谁拥有这个程序,运行时就拿谁的身份权限,不是拿运行者权限。

如:/usr/bin/passwd

ls -l /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 粘滞位

目录开启粘滞位后:用户只能删除自己创建的文件,不能删除别人的文件!

ls -ld /tmp

其他用户权限末尾t=粘滞位开启;大写T代表无执行权限,失效。

想象场景:/tmp所有人都能读写,如果没有粘滞位,任意用户可以删掉别人的临时文件,极其危险。

#数字方式 1开头chmod 1777 /home/tmp#符号方式chmod o+t /home/tmp#移除粘滞位chmod o-t /home/tmp

4、三种特殊权限对比

权限
数字值
符号设置
标识位
适用对象
核心作用
SUID
4
u+s
rws
可执行程序
运行时继承文件所有者权限
SGID
2
g+s
rwxrws
文件和目录
文件:继承组权限;目录:新建文件继承目录组
Sticky
1
o+t
rwxrwt
目录
仅文件创建者可删除文件

五、运维避坑事项

  • 杜绝随意 chmod 777。
777=所有用户拥有全部权限,极易引发入侵、文件篡改,线上业务禁止滥用。
  • 不要盲目执行chmod -R 777 / 
根目录递归权限修改,大概率直接系统崩溃。
  • 混淆文件与目录权限
文件不需要x权限;目录缺少x权限,即便有r权限也无法访问内部文件。
  • 递归修改目录时,文件与目录权限需求不同
文件推荐 644,目录推荐 755,不要统一全部设置 755。
  • ssh私钥权限过大(大于 600)会导致ssh直接拒绝登录

六、总结

chmod是运维必备的基础命令,日常调试优先符号模式u+x/g-w精准修改;标准化批量部署,统一使用数字权限。遵循最小权限原则,不给多余访问权限,守住linux 服务器第一道安全屏障。如果你觉得文章对你运维工作有帮助,记得点赞加关注。

#运维#linux运维#Linux实战#chmod

最新文章

随机文章