Linux中chmod通过“用户-组-其他人”三类身份与“读、写、执行”权限组合实现权限控制,数字法(如755)由r=4、w=2、x=1加权得出,三位分别对应属主、属组、其他人权限,符号法支持增量修改,目录需x权限才能访问。

Linux中用chmod修改文件权限,核心在于理解“用户-组-其他”三类身份与“读、写、执行”三种权限的组合关系,而数字表示法(如755、644)是这种关系的简洁映射,掌握其换算逻辑比死记硬背更实用。
权限三要素:谁?能做什么?
每个文件/目录都有三组权限,分别对应:
- 属主(user, u):文件创建者或被明确指定的所有者
- 属组(group, g):文件所属用户组的成员
- 其他人(others, o):既不是属主也不在属组的用户
每组可独立设置三种基本权限:
-
r(read,读):对文件可查看内容;对目录可列出其中文件名(
ls) - w(write,写):对文件可修改内容;对目录可增删改内部文件(需同时有x权限)
-
x(execute,执行):对文件可运行(如脚本、二进制);对目录可进入(
cd)和访问其下文件元数据
数字权限怎么算?三位八进制不是玄学
每种权限对应一个数值:r=4,w=2,x=1。三者可叠加(无权限为0),形成0–7之间的单个数字。
例如:
- rwx = 4+2+1 = 7
- rw- = 4+2+0 = 6
- r-x = 4+0+1 = 5
- --- = 0+0+0 = 0
完整权限用三位数字表示:属主 + 属组 + 其他人。比如755意思是:
- 属主:rwx(7)→ 完全控制
- 属组:r-x(5)→ 可读、可执行,不可写
- 其他人:r-x(5)→ 同上
常见组合:
-
644:文件默认权限(属主可读写,组/其他人只读) -
755:目录常用权限(属主全权,组/其他人可进可看,不可改) -
600:私密文件(仅属主可读写,如~/.ssh/id_rsa)
chmod命令的两种主流用法
① 数字模式(直接赋值)
语法:chmod ABC file,其中A、B、C为0–7的数字。
示例:
-
chmod 644 report.txt→ 设为属主读写、组/其他人只读 -
chmod 700 private.sh→ 仅属主可读、写、执行 -
chmod 750 /var/log/myapp→ 属主全权,属组可进可看,其他人无任何权限
② 符号模式(增量修改)
语法:chmod [ugoa][+-=][rwx] file,更灵活,适合微调。
说明:
-
u=属主,g=属组,o=其他人,a=全部(等价于ugo) -
+添加权限,-去除权限,=精确设定
示例:
-
chmod u+x script.sh→ 给属主加执行权限 -
chmod go-w config.conf→ 去掉组和其他人的写权限 -
chmod a=r file.txt→ 所有人仅可读(等价于644但不含x) -
chmod g+s /shared→ 设置SGID位,新创建文件自动继承目录属组
几个易错点和实用建议
• 目录必须有x权限才能被进入或访问内部文件,哪怕你只想ls内容——没x就报“Permission denied”,即使有r权限也不行。
• 使用-R递归修改要谨慎:chmod -R 777 /tmp/test看似方便,但可能让脚本、配置文件获得不该有的执行权,带来安全风险。优先考虑find配合过滤,例如只给目录加x、文件不加:
find /path -type d -exec chmod 755 {} \;find /path -type f -exec chmod 644 {} \;
• 查看当前权限用ls -l,输出首字段如-rw-r--r--或drwxr-xr-x,开头-是文件、d是目录;后续9位分三组,每组3字符对应rwx状态。
• 特殊权限位(s、t)可结合数字表示:高位第4位表示SUID(4)、SGID(2)、Sticky(1)。例如4755 = SUID + rwxr-xr-x,常用于/usr/bin/passwd。











