访问控制
- 每个文件关联访问控制信息,确定用户对文件的访问权限
- 文件系统需要验证每次操作是否合法,防止未授权访问
保护机制
口令保护
- 为每个文件设置一个口令(password)
- 用户访问文件时必须提供正确的口令
- 优点:实现简单,开销小
- 缺点:口令存储在文件系统中可能被窃取,权限粒度粗(一个口令对所有操作),修改口令需通知所有用户
加密保护
- 对文件内容进行加密存储,即使数据被窃取也无法解读
- 用户访问时需要提供密钥进行解密
- 优点:安全性高,即使存储介质被盗也无法读取
- 缺点:加解密有计算开销;密钥管理复杂(丢失密钥则数据永久丢失)
访问控制矩阵
- 用二维矩阵表示系统中的访问控制信息
- 行:系统中的主体(用户/进程)
- 列:系统中的客体(文件/设备等资源)
- 矩阵元素:主体对客体拥有的访问权限
- 优点:模型清晰,理论上可表达任意访问策略
- 缺点:矩阵稀疏(大多数用户对大多数文件无权限),存储开销大,实际系统中很少直接使用
- 实际实现:分解为按行(Capability List)或按列(ACL)存储
访问控制列表(ACL)
- 按列分解:每个文件关联一个列表,记录哪些用户(或组)拥有何种权限
- 每次访问时,系统根据发起操作的用户身份在 ACL 中查找对应权限
- 优点:逻辑清晰,易于管理和修改(仅修改文件本身的 ACL)
- 缺点:用户数量大时 ACL 变长,查找效率下降
- UNIX 简化 ACL:将用户分为三类——所有者(owner)、同组用户(group)、其他用户(others),各用 3 位(rwx)表示权限
- 这是 ACL 的一种简化形式,用 9 位权限位替代完整 ACL 列表
- 效率高,但粒度粗(无法为单个用户单独设权)
访问权限类型
- 读(R):查看文件内容
- 写(W):修改文件内容
- 执行(X):运行可执行文件(对目录而言表示可进入该目录)
- 删除(D):删除文件
- 修改属性:修改文件属主、权限等元数据
- 遍历文件夹:对目录的访问权限(列出目录内容)
- 在 UNIX 中,对目录的读/写/执行含义与普通文件不同:
- 目录的 R:可列出目录内容(
ls)
- 目录的 W:可在目录中创建或删除文件
- 目录的 X:可进入目录(
cd),但未必能列出内容
文件共享机制
硬链接(Hard Link)
- 多个文件名指向同一个 inode(索引节点)
- 实质:在目录中创建新的目录项,指向同一个 inode
- 特点:
- 所有硬链接地位平等,没有主次之分,全部删除后文件才真正被删除
- inode 中维护链接计数(
st_nlink),每创建一个硬链接计数 +1,删除一个时 -1,计数为 0 时释放 inode 和数据块
- 硬链接不能跨文件系统(inode 号仅在同一个文件系统内唯一)
- 不能对目录创建硬链接(防止环路)
- 优点:共享效率高(无额外空间开销),共享关系对应用程序透明
- 缺点:删除时容易误以为文件已删除(实际还存在其他链接),逻辑复杂
软链接 / 符号链接(Symbolic Link)
- 创建一个特殊类型文件,其内容存储指向目标文件的路径名
- 访问软链接时,系统自动读取该文件中的路径,重定向到目标文件
- 特点:
- 软链接有自己的 inode,与原文件 inode 不同
- 可以跨文件系统(因为存的是路径名,而非 inode 号)
- 可以对目录创建软链接
- 删除原文件后,软链接仍然存在,但指向无效路径——悬空链接(Dangling Link)
- 符号链接文件本身的权限(
lrwxrwxrwx)通常无实际意义,权限由目标文件决定
- 优点:灵活,支持跨文件系统共享
- 缺点:访问时需多一次路径解析,存在悬空链接风险
硬链接 vs 软链接对比
| 特性 | 硬链接 | 软链接 |
|---|
| 本质 | 多个目录项指向同一 inode | 存路径名的特殊文件 |
| 跨文件系统 | 不支持 | 支持 |
| 目录共享 | 不支持 | 支持 |
| 链接目标删除后 | 文件仍可通过其他链接访问 | 链接失效(悬空) |
| 对应用透明性 | 透明 | 有间接性 |
| inode | 共用 | 各自独立 |
文件备份
备份策略
- 全量备份(Full Backup):复制所有文件到备份介质
- 优点:恢复最简单,只需一份备份即可完全恢复
- 缺点:备份时间长,占用存储空间大
- 通常作为周期性基准备份(如每周日执行)
- 增量备份(Incremental Backup):只备份自上次任何类型备份以来修改过的文件
- 优点:备份量小,速度快,节省存储空间
- 缺点:恢复时需要全量备份 + 所有增量备份链,任一个增量损坏则后续数据丢失
- 通常每日执行
- 差异备份(Differential Backup):只备份自上次全量备份以来修改过的文件
- 优点:恢复比增量快(只需全量 + 最新差异备份)
- 缺点:每次差异备份逐渐变大(因为累积所有自全量后的变化)
- 在备份速度与恢复速度之间折中
备份示例(周日全量 + 周一到周六增量/差异)
| 日期 | 修改文件 | 全量 | 增量 | 差异 |
|---|
| 周日 | - | 全量 A | A | A |
| 周一 | f1 | - | f1 | f1 |
| 周二 | f2 | - | f2 | f1,f2 |
| 周三 | f3 | - | f3 | f1,f2,f3 |
| 周四恢复 | - | 需 A+f1+f2+f3 | 需 A+f1+f2+f3 | |
差异备份周三需备份 f1+f2+f3(累积),增量只需 f3(仅当日变化)。
备份注意事项
- 定期执行:按业务需求设定备份周期(如每日增量 + 每周全量)
- 异地存储:备份介质最好存放在异地,防止火灾、盗窃等灾难导致主备同时丢失
- 恢复测试:定期测试备份的可恢复性,确保备份数据可用
- 冷热备份:热备份(系统运行中备份)vs 冷备份(停机备份),热备份需解决一致性问题