Appearance
Linux 权限核心是通过「所有者 - 组 - 其他用户」三层身份,搭配「读 - 写 - 执行」三种权限,控制文件 / 目录的访问操作,核心规则简单且易落地。 
一、身份与权限类型
1.1 三层访问身份(谁能操作)
- 所有者(u,user):文件 / 目录的创建者,拥有最高控制权。
- 所属组(g,group):同一组内的用户,可共享部分权限(比如团队协作文件)。
- 其他用户(o,other):系统中除所有者和所属组外的所有用户(最严格限制)。
- 所有用户(a,all):包含 u、g、o 三类身份(批量设置权限时用)。
1.2 三种基础权限(能做什么)
- 无权限:用 - 表示,数字标识为 0。
1.3 权限组合表示(直观查看)
ls -l 命令可查看文件 / 目录的权限,示例输出解析: 例如:
-rwxr-xr-- 1 root root 1234 5月 20 10:00 test.sh- 第 1-10 位为权限位:-rwxr-xr--
- 第 1 位:文件类型(- 是普通文件,d 是目录,l 是软链接)。
- 第 2-4 位:所有者权限(rwx = 读 + 写 + 执行)。
- 第 5-7 位:所属组权限(r-x = 读 + 执行,无写权限)。
- 第 8-10 位:其他用户权限(r-- = 仅读,无写 + 执行权限)。
二、快速设置权限
2.1 数字权限规则
每种身份的权限用「r=4、w=2、x=1」的和表示,三层身份权限组合成三位数(所有者 + 所属组 + 其他)。
- 示例 1:rwxr-xr-- = 所有者(4+2+1=7)+ 所属组(4+0+1=5)+ 其他(4+0+0=4)→ 数字权限 754。
- 示例 2:rwxrwxrwx(所有用户都有全部权限)→ 7+7+7= 777(慎用,安全风险高)。
- 示例 3:rw-r--r--(所有者读 + 写,其他仅读)→ 6+4+4= 644(普通文件常用)。
- 示例 4:rwxr-xr-x(所有者全权限,其他读 + 执行)→7+5+5= 755(脚本 / 目录常用)
2.2 常用数字权限场景
| 场景 | 推荐数字权限 | 说明 |
|---|---|---|
| 普通文档(如 txt、md) | 644 | 自己能改,别人只能看 |
| 可执行脚本(如 .sh) | 755 | 自己能改能执行,别人能看能执行 |
| 个人隐私文件(如密钥) | 600 | 仅自己能读 + 写,其他人无权限 |
| 共享目录(团队协作) | 775 | 组内用户可增删改,其他人只读 |
三、权限操作命令
3.1 chmod:修改文件/目录权限
语法:chmod [权限设置] 文件名/目录名,支持「数字模式」和「符号模式」。3.1.1 数字模式
# 给 test.sh 设权限 755(所有者 rwx,组和其他 r-x)
chmod 755 test.sh
# 给 docs 目录及所有子文件设权限 775(-R 递归修改目录内内容)
chmod -R 775 docs/3.1.2 符号模式
语法:chmod [身份][操作][权限] 目标,比如 u+x(给所有者加执行权限)。- 身份:u(所有者)、g(组)、o(其他)、a(所有)。
- 操作:+(添加权限)、-(移除权限)、=(设置权限,覆盖原有)。
- 权限:r、w、x。
给所有者添加执行权限(比如脚本刚创建,缺执行权限)
chmod u+x test.sh
# 给所属组添加写权限,移除其他用户的读权限
chmod g+w,o-r file.txt
# 给所有用户设置读+执行权限(覆盖原有)
chmod a=rx script.sh3.2 修改文/目录的所有者和所属组
语法:chown [所有者]:[所属组] 目标(需 sudo 权限,修改系统级归属)。示例
# 把 file.txt 的所有者改成 alice,所属组改成 work 组
sudo chown alice:work file.txt
# 只改所有者(所属组不变)
sudo chown bob test.sh
# 只改所属组(所有者不变)
sudo chown :team docs/
# 递归修改目录及子文件的所有者和组
sudo chown -R alice:work project/3.3 单独修改所属组
注:(少用,chown 已覆盖)
# 把 docs 目录的所属组改成 dev 组
sudo chgrp dev docs/四、特殊权限与注意事项
4.1 目录权限的关键规则
- 目录必须有 x 权限才能进入(cd),否则即使有 r 权限也无法查看内容。
- 目录有 w 权限意味着能增删其内的文件 / 子目录,和文件本身的权限无关(比如你是目录所有者,即使目录内文件是别人的,你也能删除)。
4.2 特殊权限
说明:(了解即可,日常用得少)
- SUID(4 xxx):普通用户执行文件时,临时获得文件所有者的权限(如 passwd 命令,普通用户能修改自己密码,就是因为有 SUID)。
- SGID(2 xxx):用户在目录内创建的文件,所属组自动继承该目录的所属组(适合团队共享目录)。
- Sticky Bit(1 xxx):目录内的文件只有所有者或 root 能删除(如 /tmp 目录,权限 1777,所有人能创建文件,但只能删自己的)。
4.3 安全注意事项
- 避免给敏感文件 / 目录设 777 权限(所有用户都能修改删除,易被恶意篡改)。
- 系统关键文件(如 /etc/passwd、/bin 下的命令)权限不要随意修改,否则可能导致系统故障。
- 给他人授权时,优先用「所属组」控制(而非开放「其他用户」权限),粒度更细更安全。
4.4 chmod 与chown 区别
chmod 和 chown 都是 Linux 中用于修改文件属性的命令,区别如下:
| 命令 | 英文全称 | 作用 | 示例 |
|---|---|---|---|
chmod | change mode | 修改文件的权限(读 r、写 w、执行 x) | chmod 750 file 或 chmod u+x file |
chown | change owner | 修改文件的所有者(owner)和/或所属组(group) | chown alice:developers file |
记忆技巧:
- mod → mode(模式/权限) →
chmod管权限。 - own → owner(所有者) →
chown管归属。
常见组合:
# 修改文件权限为 rwxr-x---
chmod 750 script.sh
# 修改文件所有者为 alice,组为 developers
chown alice:developers script.sh五、权限问题常见场景
- 无法执行脚本:提示「Permission denied」,给脚本加执行权限 chmod u+x 脚本名。
- 无法进入目录:提示「Permission denied」,给目录加 x 权限 chmod u+x 目录名。
- 无法修改文件:确认自己是所有者(ls -l 查看),或有 w 权限,无则用 chmod u+w 文件名。