Linux 的权限管理是其安全体系的核心,它决定了谁可以对文件或目录执行何种操作。这种机制确保了系统的稳定性和数据的安全性,防止未经授权的访问或误操作。
下面将从基本权限模型、权限表示方式、特殊权限、访问控制列表(ACL)以及实际应用等方面详细解释。
一、基本权限模型:三类主体 + 三类权限
Linux 中每个文件和目录都有三类权限,分别对应三类主体:
权限类型 | 含义 |
r (read) | 读权限:查看文件内容 / 列出目录内容(ls) |
w (write) | 写权限:修改文件内容 / 在目录中创建、删除、重命名文件 |
x (execute) | 执行权限:运行文件为程序 / 进入目录 |
这三种权限作用于三类主体:
用户类别 | 说明 |
所有者(User) | 文件的创建者或被指定的用户 |
所属组(Group) | 文件所属组的成员用户 |
其他人(Others) | 既不是所有者,也不在所属组中的其他用户 |
二、权限的表示方式
1. 符号表示法(常用)
使用 ls -l 查看文件权限:
$ -rw-r--r-- 1 alice developers 1024 Apr 5 10:00 file.txt
分解说明:
– r w – r – – r – –
↑↑↑ ↑↑↑ ↑↑↑
用户 组 其他人
第一个字符 – 表示这是一个普通文件:d = 目录,l = 符号链接,c = 字符设备,b = 块设备
rw-:所有者(alice)有读写权限,无执行权限
r–:组(developers)只有读权限
r–:其他人也只有读权限
2. 数字表示法(八进制)
每个权限用一个数字表示:
权限 | 数值 |
R | 4 |
W | 2 |
X | 1 |
– | 0 |
组合起来:
- rw- = 4+2+0 = 6
- r-x = 4+0+1 = 5
- rwx = 4+2+1 = 7
所以 rw-r–r– = 644
常见权限数字:
- 644:文件默认权限(所有者可读写,组和其他人只读)
- 755:可执行文件或脚本(所有者可读写执行,组和其他人可读执行)
- 700:私有目录(如家目录),只有所有者可访问
- 750:组内共享,其他人无权限
三、设置权限的命令
chmod:修改文件权限
#使用数字
$ chmod 644 file.txt
$ chmod 755 script.sh
# 使用符号
$ chmod u+x script.sh # 给所有者添加执行权限
$ chmod g+w file.txt # 给组添加写权限
$ chmod o-r file.txt # 取消其他人读权限
$ chmod a+r file.txt # 所有人(all)添加读权限使用数字
chown:修改文件所有者和所属组
$ chown alice file.txt # 改所有者
$ chown alice:developers file.txt # 改所有者和组
$ chown :developers file.txt # 只改组
$ chown -R alice:developers /home/alice/project # 递归修改目录
chgrp:修改所属组(较少用,chown 更通用)
$ chgrp developers file.txt
四、目录权限的特殊含义
对目录来说,权限含义略有不同:
权限 | 对目录的意义 |
r | 可以列出目录内容(ls) |
w | 可以在目录中创建、删除、重命名文件(⚠️ 删除文件取决于目录的写权限,而非文件本身!) |
x | 可以进入目录(cd),访问其下的子文件或子目录 |
示例:即使你对某个文件有写权限,但如果其父目录没有写权限,你也无法删除它。
五、特殊权限位(SUID, SGID, Sticky Bit),可以不了解
这些是额外的权限位,用于特殊场景。
1. SUID(Set User ID)—— 4xxx
- 作用:运行文件时,以文件所有者的身份执行
- 应用:如 passwd 命令需要修改 /etc/shadow,普通用户不能直接改,但 passwd 有 SUID,所以运行时以 root 身份修改。
- 设置:
$ chmod u+s /usr/bin/passwd
# 或
$ chmod 4755 passwd
- 显示为:-rwsr-xr-x
2. SGID(Set Group ID)—— 2xxx
- 作用:
- 对文件:以文件所属组的身份运行
- 对目录:在该目录下创建的新文件自动继承目录的组
- 设置:
$ chmod g+s /shared/project
$ chmod 2775 /shared/project
- 显示为:drwxrwsr-x
这在团队协作中非常有用,确保所有人在共享目录中创建的文件都属于同一个组。
3. Sticky Bit(粘滞位)—— 1xxx
- 作用:只能由文件所有者删除自己的文件,即使目录有写权限
- 应用:如 /tmp 目录,所有人都可写,但不能删除别人的文件
- 设置:
$ chmod +t /tmp
$ chmod 1777 /tmp
- 显示为:drwxrwxrwt
六、权限管理的最佳实践
- 最小权限原则:只给用户必要的权限。
- 使用组来管理权限,而不是逐个用户设置。
- 家目录通常设为 700 或 750,保护隐私。
- 敏感文件(如 SSH 密钥)设为 600。
- 避免滥用 SUID/SGID,可能带来安全风险。
总结:Linux 权限管理的核心
层级 | 机制 | 用途 |
1 | 基本权限(rwx) | 控制用户、组、其他人的访问 |
2 | 所有者与组(chown/chgrp) | 定义文件归属 |
3 | 特殊权限(SUID/SGID/Sticky) | 实现特权执行和安全删除 |
4 | ACL | 精细化控制,突破“三类用户”限制 |
一句话总结:Linux 权限管理通过“谁(用户/组) + 对什么(文件/目录) + 能做什么(rwx)”的模型,实现灵活而安全的资源访问控制。