Appearance
文件的保护
考情分析
文件保护在 408 真题中偶有涉及,多以选择题形式考查访问控制方式的区别。属于 🔥 中低频考点。
多用户系统中,你的文件别人能不能读、能不能改?这就是文件保护要解决的问题——本质上是"谁能对什么文件做什么操作"的权限管理。
访问类型
| 访问类型 | 说明 |
|---|---|
| 读(Read) | 读取文件内容 |
| 写(Write) | 修改文件内容 |
| 执行(Execute) | 将文件装入内存并执行 |
| 追加(Append) | 在文件末尾添加内容 |
| 删除(Delete) | 删除文件 |
| 列目录(List) | 读取文件的属性信息 |
访问控制方式
1. 存取控制矩阵
用一个二维矩阵表示所有用户对所有文件的访问权限:
| 文件1 | 文件2 | 文件3 | |
|---|---|---|---|
| 用户A | RW | R | - |
| 用户B | R | RWX | RW |
| 用户C | - | R | R |
问题:矩阵规模 = 用户数 × 文件数,存储开销巨大,且矩阵通常是稀疏的。就像给全校每个学生和每间教室都列一张出入权限表——大部分格子都是"无权限",白白浪费空间。
2. 访问控制列表 ACL
**ACL(Access Control List)**以文件为中心,每个文件维护一个列表,记录哪些用户有哪些权限。
这相当于存取控制矩阵的按列分解。
优点:只存储有权限的用户-权限对,节省空间
缺点:ACL 可能很长,检索开销大
3. 能力表
**能力表(Capability List)**以用户为中心,每个用户维护一个列表,记录它能访问哪些文件及权限。
这相当于存取控制矩阵的按行分解。
4. 精简的访问控制(Unix 方案)
Unix/Linux 对 ACL 做了精简,将用户分为三类,每类分配 rwx 三种权限:
| 用户类别 | 说明 |
|---|---|
| 文件所有者(owner) | 创建文件的用户 |
| 同组用户(group) | 与所有者属于同一用户组 |
| 其他用户(others) | 系统中的其他所有用户 |
权限表示:rwxr-xr--
─┬─ ─┬─ ─┬─
│ │ └── others: 只读
│ └─────── group: 读+执行
└──────────── owner: 读+写+执行
对应八进制:754这种方案只需要 9 个 bit 就能表示一个文件的全部权限。
三种方式的对比
| 方式 | 视角 | 存储 | 优点 | 缺点 |
|---|---|---|---|---|
| 存取控制矩阵 | 全局 | 用户×文件 矩阵 | 直观 | 空间浪费严重 |
| ACL | 以文件为中心 | 每个文件一个列表 | 管理直观 | 列表可能很长 |
| 能力表 | 以用户为中心 | 每个用户一个列表 | 方便用户管理 | 难以按文件撤销权限 |
| Unix 精简方案 | 以文件为中心 | 9 bit | 极其紧凑 | 粒度较粗 |
口令与加密
除了访问控制,还有两种辅助保护方式:
- 口令保护:访问文件需要提供正确的口令。口令存放在 FCB 中。缺点是口令以明文存储不安全,且口令传输过程可能被截获
- 加密保护:对文件内容进行加密,只有持有密钥的用户才能解密读取。安全性高但加解密有开销
考研高频考点
- 🔥🔥 存取控制矩阵、ACL、能力表的区别与联系
- 🔥🔥 Unix 的 rwx 权限表示与八进制转换
- 🔥 口令保护与加密保护的优缺点
- 🔥 ACL 是按列分解,能力表是按行分解
保护机制管的是"谁能访问",但文件本身的数据怎么组织?下一篇来看文件的逻辑结构——从用户视角看数据是怎么排列的。