文件管理(六)—— 文件共享和保护

1. 文件共享

共享 vs 复制:共享意味着系统中只存在一份文件数据,任何一个共享用户对文件的修改其他人都能看到;复制则是各自拥有独立副本,互不影响。

文件共享有两种实现方式:硬链接(基于索引节点) 和 软链接(基于符号链)。

硬链接(基于索引节点)

不同用户目录中的多个目录项直接指向同一个索引节点,索引节点中设有 链接计数(count) 记录当前有多少个目录项指向它。

示例:user1 目录中文件名为 aaa,user2 目录中文件名为 bbb,二者指向同一索引节点,count = 2。

删除文件时的规则:

  • 某用户删除文件 → 仅删除该用户的目录项,并将 count 减 1
  • 只有 count 减为 0 时,才真正删除文件数据和索引节点
  • 若 count > 0 时强行删除数据,会导致其他用户的目录项指向无效地址(指针悬空)

软链接(基于符号链 / 快捷方式)

用户创建一个特殊的 link 类型文件,其中存储目标文件的存放路径,操作系统通过路径一层一层查找目录最终找到目标文件。类似 Windows 中的快捷方式。

访问过程:操作系统检测到 link 类型 → 读取其中的路径 → 按路径逐级查询目录 → 找到目标文件。

软链接失效:若目标文件已被删除,link 文件本身仍然存在,但按路径查找时会失败(Windows 提示"快捷方式所指向的项目已被删除")。

硬链接 vs 软链接对比

对比项 硬链接 软链接
实现方式 目录项直接指向索引节点 创建 link 文件存储路径
访问速度 快(直接定位) 慢(需逐级查询目录,涉及磁盘 I/O)
删除原文件的影响 count 归零才删数据,其他链接仍有效 软链接立即失效
是否占用额外文件 否 是(link 文件)
类比 --- Windows 快捷方式

2. 文件保护

操作系统通过以下三种方式保护文件数据安全。

口令保护

为文件设置一个口令,口令存放在文件对应的 FCB 或索引节点中。用户访问时需提供正确口令,操作系统负责比对验证。

说明
优点 空间和时间开销小
缺点 口令存储于系统内部,一旦系统被入侵则口令可能泄露,安全性较低

加密保护

使用密码对文件数据进行加密存储,系统中保存的是加密后的数据而非原始数据。只有提供正确密码才能解密还原。

异或加密示例:密码 01001,原数据 10110 → 异或后密文 11111;解密时再次异或同一密码 → 还原为 10110。

说明
优点 密码不存储在系统中,仅用户自己知晓,保密性强
缺点 加密/解密过程需要额外的时间开销

访问控制

在每个文件的 FCB 或索引节点中增加一张访问控制表(ACL),记录每个用户(或用户组)对该文件可执行的操作权限(读/写/执行/删除等)。

用户请求访问时,操作系统查表检查权限,无权则拒绝。

精简访问控制表:当用户数量很多时,ACL 会很长,可改为以用户组为单位设置权限:

分组 读 写 执行
系统管理员 1 1 1
文件属主 1 1 1
文件组伙伴 1 0 1
其他用户 0 0 0

Windows 中文件/文件夹属性 → 安全选项卡即为访问控制的图形化界面;拒绝项优先级高于允许项。

说明
优点 权限粒度细,可针对不同用户赋予不同操作类型的权限,灵活性最高
缺点 ACL 可能较大,管理复杂

对目录设置访问控制时,该控制同时作用于目录下的所有文件。

三种保护方式对比

保护方式 密钥/口令存放位置 安全性 开销 权限粒度
口令保护 系统内(FCB) 低 小 粗(知道口令即可全权访问)
加密保护 用户自己保管 高 中(加解密耗时) 粗(知道密码即可全权访问)
访问控制 系统内(ACL) 高 中 细(按操作类型分别授权)
相关推荐
CS创新实验室2 分钟前
为什么三台机器就能选出一个“带头大哥“?——Raft 一致性算法,一次讲透
分布式·操作系统
晚安日记wanna43 分钟前
大厂禁 JOIN 的真正原因,拆到第四层才清楚
数据库·后端·面试
多喝水身体棒1 小时前
Spring Boot 自动配置原理,看完终于不慌了
面试·程序员
丑陋小蚊子3 小时前
有作品集的岗位,简历和作品各写什么?
面试·求职招聘·大学生·简历·简历下载
sweet丶3 小时前
iOS 为什么没有内存交换分区(swap)
操作系统
多多爱学习4 小时前
括号有几层?得看还有多少个左括号没闭合
c语言·c++·算法·面试
丑陋小蚊子4 小时前
同一家公司升过岗,简历别合成一段
面试·求职招聘·大学生·简历·简历下载
此时不提桶,更待何时4 小时前
05-04-B-HBase与时序库面试与生产事故实战
数据库·面试·hbase
怕浪猫6 小时前
分享一个做视频的skill,这条白板视频,每一笔都是代码画的
前端·javascript·面试
弈栈录8 小时前
基于 Spring Boot 构建生产级 AI 应用平台
后端·面试·架构