访问控制

  • 每个文件关联访问控制信息,确定用户对文件的访问权限
  • 文件系统需要验证每次操作是否合法,防止未授权访问

保护机制

口令保护

  • 为每个文件设置一个口令(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),但未必能列出内容

文件共享机制

  • 多个文件名指向同一个 inode(索引节点)
  • 实质:在目录中创建新的目录项,指向同一个 inode
  • 特点:
    • 所有硬链接地位平等,没有主次之分,全部删除后文件才真正被删除
    • inode 中维护链接计数(st_nlink),每创建一个硬链接计数 +1,删除一个时 -1,计数为 0 时释放 inode 和数据块
    • 硬链接不能跨文件系统(inode 号仅在同一个文件系统内唯一)
    • 不能对目录创建硬链接(防止环路)
  • 优点:共享效率高(无额外空间开销),共享关系对应用程序透明
  • 缺点:删除时容易误以为文件已删除(实际还存在其他链接),逻辑复杂
  • 创建一个特殊类型文件,其内容存储指向目标文件的路径名
  • 访问软链接时,系统自动读取该文件中的路径,重定向到目标文件
  • 特点:
    • 软链接有自己的 inode,与原文件 inode 不同
    • 可以跨文件系统(因为存的是路径名,而非 inode 号)
    • 可以对目录创建软链接
    • 删除原文件后,软链接仍然存在,但指向无效路径——悬空链接(Dangling Link)
    • 符号链接文件本身的权限(lrwxrwxrwx)通常无实际意义,权限由目标文件决定
  • 优点:灵活,支持跨文件系统共享
  • 缺点:访问时需多一次路径解析,存在悬空链接风险

硬链接 vs 软链接对比

特性硬链接软链接
本质多个目录项指向同一 inode存路径名的特殊文件
跨文件系统不支持支持
目录共享不支持支持
链接目标删除后文件仍可通过其他链接访问链接失效(悬空)
对应用透明性透明有间接性
inode共用各自独立

文件备份

备份策略

  • 全量备份(Full Backup):复制所有文件到备份介质
    • 优点:恢复最简单,只需一份备份即可完全恢复
    • 缺点:备份时间长,占用存储空间大
    • 通常作为周期性基准备份(如每周日执行)
  • 增量备份(Incremental Backup):只备份自上次任何类型备份以来修改过的文件
    • 优点:备份量小,速度快,节省存储空间
    • 缺点:恢复时需要全量备份 + 所有增量备份链,任一个增量损坏则后续数据丢失
    • 通常每日执行
  • 差异备份(Differential Backup):只备份自上次全量备份以来修改过的文件
    • 优点:恢复比增量快(只需全量 + 最新差异备份)
    • 缺点:每次差异备份逐渐变大(因为累积所有自全量后的变化)
    • 在备份速度与恢复速度之间折中

备份示例(周日全量 + 周一到周六增量/差异)

日期修改文件全量增量差异
周日-全量 AAA
周一f1-f1f1
周二f2-f2f1,f2
周三f3-f3f1,f2,f3
周四恢复-需 A+f1+f2+f3需 A+f1+f2+f3

差异备份周三需备份 f1+f2+f3(累积),增量只需 f3(仅当日变化)。

备份注意事项

  • 定期执行:按业务需求设定备份周期(如每日增量 + 每周全量)
  • 异地存储:备份介质最好存放在异地,防止火灾、盗窃等灾难导致主备同时丢失
  • 恢复测试:定期测试备份的可恢复性,确保备份数据可用
  • 冷热备份:热备份(系统运行中备份)vs 冷备份(停机备份),热备份需解决一致性问题