从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

    • 我的操作系统学习笔记

    • 我的操作系统实验笔记

    • 操作系统网课-王道考研

      • 0_课程白嫖指南
      • 1_1_操作系统的概念(定义)、功能和目标
      • 1_2_操作系统的特征
      • 1_3_操作系统的发展与分类
      • 1_4_操作系统的运行机制与体系结构
      • 1_5_中断和异常
      • 2_1_6_系统调用
      • 2_1_1_进程的定义、组成、组织方式、特征
      • 2_1_2_进程的状态与转换
      • 2_1_3_进程控制
      • 2_1_4_进程通信
      • 2_1_5_线程概念和多线程模型
      • 2_2_1_处理机调度的概念、层次
      • 2_2_2_进程调度的时机、切换与过程、方式
      • 2_2_3_调度算法的评价指标
      • 2_2_4_FCFS、SJF、HRRN调度算法
      • 2_2_5_调度算法:时间片轮转、优先级、多级反馈队列
      • 2_3_1_进程同步、进程互斥
      • 2_3_2_进程互斥的软件实现方法
      • 2_3_3_进程互斥的硬件实现方法
      • 2_3_4_信号量机制
      • 2_3_5_用信号量实现进程互斥、同步、前驱关系
      • 2_3_6_生产者-消费者问题
      • 2_3_7_多生产者-多消费者问题
      • 2_3_8_吸烟者问题
      • 2_3_9_读者-写者问题
      • 2_3_10_哲学家进餐问题
      • 2_3_11_管程
      • 2_4_1_死锁的概念
      • 2_4_2_死锁的处理策略—预防死锁
      • 2_4_3_死锁的处理策略—避免死锁
      • 2_4_4_死锁的处理策略—检测和解除
      • 3_1_1_内存的基础知识
      • 3_1_2_内存管理的概念
      • 3_1_3_覆盖与交换
      • 3_1_4_连续分配管理方式
      • 3_1_5_动态分区分配算法
      • 3_1_6_基本分页存储管理的基本概念
      • 3_1_7_基本地址变换机构
      • 3_1_8_具有快表的地址变换机构
      • 3_1_9_两级页表
      • 43_3_1_10_基本分段存储管理方式
      • 3_1_11_段页式管理方式
      • 3_2_1_虚拟内存的基本概念
      • 3_2_2_请求分页管理方式
      • 3_2_3_页面置换算法
      • 3_2_4_页面分配策略
      • 4_1_1_初识文件管理
      • 4_1_2_文件的逻辑结构
      • 4_1_3_文件目录
      • 4_1_4_文件的物理结构(上)
      • 4_1_4_文件的物理结构(下)
      • 54_4_1_5_文件存储空间管理
      • 4_1_6_文件的基本操作
      • 4_1_7_文件共享
      • 4_1_8_文件保护
        • 口令保护
        • 加密保护
        • 访问控制
        • 小结
      • 4_1_9_文件系统的层次结构
      • 4_2_1_磁盘的结构
      • 4_2_2_磁盘调度算法
      • 4_2_3_减少磁盘延迟时间的方法
      • 4_2_4_磁盘的管理
      • 5_1.2_I-O 控制器
      • 5_1.3_I-O 控制方式
      • 65_5_1_1_I-O 设备的概念和分类
      • 5_1_4_I-O 软件层次结构
      • 5_1_5_I-O 核心子系统
      • 5_1_6_假脱机技术
      • 5_1_7_设备的分配与回收
      • 5_1_8_缓冲区管理
  • Linux

  • 计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 操作系统
  • 操作系统网课-王道考研
2023-05-15
目录

418_文件保护

# 4.1_8_文件保护

‍各位同学大家好,在这个小节中我们会学习文件保护相关的知识点,操作系统需要保护文件数据的安全,‍‍一般来说可以采用这样的三种方法,口令保护、加密保护和访问控制,‍‍我们会按从上至下的顺序依次来学习。

‍‍ ​

# 口令保护

首先来看一下什么是口令保护。‍‍比如说一个用户为自己的文件设置了一个口令,这个口令是 ABC112233,‍‍其他的用户想要访问这个文件的时候,就必须提供相同的口令,操作系统会负责验证‍‍用户提供的口令是否正确。‍‍

一般来说正确的口令是存放在与文件相对应的 fcb 或者索引节点当中的,‍‍所以操作系统会从 fcb 当中读出正确的口令并且和用户提供的这个口令进行对比,‍‍如果这个口令正确,那么就允许用户访问文件。‍‍

所以这种文件保护方式的优点就是开销小,‍‍首先是保存这个口令带来的空间花销是很小的,也就是保存这样一个字符串。‍‍另外当一个用户想要访问一个文件的时候,操作系统无论如何肯定是要找到这个文件对应的 fcb 和‍‍或者索引节点的,从 fcb 或者索引节点当中取出这个口令并且进行对比,‍‍其实是不需要花太多的时间的,因此验证口令的时间开销也会比较小。‍‍

但是这种方式的缺点就在于我们正确的口令它是存放在系统内部的,‍‍所以如果有人入侵系统并且知道了正确的口令的话,那么这个人就可以畅通无阻的访问这个文件了,‍‍所以口令存放在系统内部是不够安全的。‍‍

​

# 加密保护

第二种方式叫做加密保护,就是使用某个密码‍‍对文件进行加密,然后在访问文件的时候,用户需要提供正确的密码,‍‍才能把这个文件进行正确的解密。‍‍

我们来举个例子,看一个最简单的加密算法 异或加密。‍‍学过计组的话,大家对异或运算应该是很熟悉的,‍‍假设我们用于加密解密的密码是 01001 一这么一串二进之位,那文件的原始数据是这样的,‍‍我们可以用密码和文件的这些原始数据‍‍依次地做异或运算,如果两个相同的二进制位进行异或运算的话,他得到的结果应该是 0。‍‍如果两个二进制位是不同的话,那么他们进行一或运算得到的结果应该是一,‍‍所以对这些二进制位依次进行异或运算,那么我们可以得到用密码加密的结果就是 01100,然后接下来再对接下来的‍‍这 5 个二进制位再进行加密,以此类推,这样的话我们就可以把整个文件的数据都进行加密。‍‍因此系统当中保存的并不是文件的原始数据,而是保存了‍‍对文件进行加密之后的这一份数据

​

所以如果一个用户想要访问这个文件的话,那么必须‍‍对这个文件进行解密才行,不然的话读出来其实就是一串没有意义的乱码。‍‍解密的过程其实也是用这一串密码对这些二进制位进行异或运算。‍‍同样的两个相同的二进制位进行异或,得到的结果是 0,‍‍这两个二进制位也相同,所以异或之后是 0,这两个二进制位不同,所以异或之后是一‍‍这两个相同,所以异或后是 0 这两个不同,所以异或之后是一剩下的这些二进制位也可以用相同的这种‍‍异或的算法把它们都进行依次的解密

​ ‍

这个地方大家会发现,‍‍如果在加密的时候使用的密码和解密的时候使用的密码是一致的话,那么加密和解密之后,‍‍这个文件的数据其实是完全一样的,大家可以自己动手尝试一下,‍‍并且对比一下文件的原始数据,还要解密之后的结果是否一致。‍‍总之如果用户能够提供相同的正确的密码的话,那么是可以把加密的文件‍‍给它解密成原有的那种数据形式的。但是如果用户使用一个错误的密码进行解密的话,会发生什么情况呢?‍‍

我们来看一下,假设用户用 011 这样的错误的一个密码来进行解密的话,‍‍那么最终解密出来的结果是这个样子的,大家可以对比一下它和文件的原始数据是不一样的。‍‍因此如果一个用户不知道这个文件的密码的话,那么它是没办法正常的访问这个文件数据的。‍‍

所以加密保护这种方式的优点就是保密性强,‍‍并且不需要在系统当中存储密码,用户只需要自己记住自己的密码是多少就可以了。‍‍如果说他想要别的用户也可以访问自己的文件的话,他只需要把自己的密码告诉别的用户就可以。‍‍不过这种方式的缺点也很明显,就是在进行加密和解密或者说‍‍进行编码和译码的过程当中,需要花费一定的时间,这是加密保护

​

# 访问控制

第三种实现文件保护的方式叫做访问控制,‍‍系统会在每个文件的 fcb 或者索引节点当中增加一个访问控制表,‍‍在访问控制表当中记录了各个用户可以对这个文件进行哪些操作,需要注意的是‍‍每一个文件都会有一张自己的访问控制表,‍‍用户对文件执行的操作可以分为这样的一些类型,读写、执行、添加、删除、列表清单‍‍等等不同的系统对这种操作的类型的划分不一样,这个地方不是很重要,大家自己看一下就可以了。‍‍

比如说有一个系统当中它所需要控制的操作类型就是这几种,‍‍并且这个系统当中有三个用户,一个是父亲,一个是母亲,一个是儿子,那么一个文件的访问控制表可能就是长这个样子的,‍‍这个地方一表示允许,零表示拒绝,

  • 所以‍‍父亲用户可以对这个文件进行读,写,执行、添加、删除、列表清单等等这一系列的操作
  • 母亲用户可只可以对这个文件进行读,执行,还有列表清单这几种操作,‍‍而不能对文件进行写,添加,删除
  • 而儿子这个用户对文件的访问权限就是‍‍不可以读,不可以写,什么都不能干

所以在这个系统当中的某个用户在请求访问某个文件的时候,那操作系统就可以查看一下‍‍这个文件的访问控制表,检查一下‍‍用户是否拥有对文件进行某种操作的权限,如果他没有这个权限的话,那就可以拒绝访问。‍‍所以可以用这种方式就保证文件的安全性。‍‍

​ ‍

在这个例子当中,我们是以每个用户为单位来标识每个用户对某一个文件的这种读写各种操作的权限。‍‍但是如果说一个计算机当中有很多个用户的话,那么就有可能会导致访问控制表的‍‍长度很长会很大。这个问题可以用精简的访问控制表来解决,所谓精简的访问控制表,其实就是‍‍要以组为单位来标记各组的用户可以对文件执行哪些操作。‍‍

比如说我们可以把一个计算机的用户分为这样的几个分组,第一组叫做系统管理员,第二组叫做文件组,‍‍第三组叫做文件组的伙伴,第四组叫做其他用户,那么每个用户都会从属于其中的一个或者两个分组

当一个用户想要访问这个文件的时候,系统就会检查它所属的分组‍‍是否拥有相应的访问权限,所以其实操作系统也需要管理这些用户分组的信息,‍‍他需要记录哪个用户是属于哪个分组,精简的访问列表就可以表示成这个样子。‍‍总共有这样的 4 个分组,每个分组的用户‍‍对于一个文件的这些这操作的权限是不一样的,那么在这个地方同样是一表示允许,零表示拒绝。‍‍可以看到如果说一个用户是属于其他用户分组的话,那么它‍‍既不可以读这个文件,也不可以写这个文件。如果说这个文件主想要给某个用户也拥有读的权限的话,‍‍那么就可以由文件组把这个用户放到‍‍文件组的伙伴分组当中,这样的话用户就可以对文件进行读的操作了。‍‍

​

接下来我们来看一下 windows 操作系统它是怎么实现访问控制的。首先我们可以给自己的 windows 电脑‍‍添加一个新的本本地账户,‍‍像 win10 里就可以在设置当中找到添加一个账户的选项,‍‍自己动手尝试一下,依次选择红框的这些部分,然后它会跳出一个让我们建立新的账户的页面,‍‍因为我们要创建的是本地账户,所以我们点这个地方就红框的部分,于是会弹出一个这样的界面,‍‍我们可以输入我们想要设置的新账户的账户名,‍‍比如说这个账户叫做临时访客,然后点下一步确认,于是我们就可以在家庭和其他成员这个地方看到临时访客本地账户了。‍‍

​ ‍

如果说我们想要切换到临时访客本地用户的话,那么我们只需要菜单,然后点这个地方,‍‍点临时访客就可以切换到这个用户了

​

接下来我们可以随便打开一个‍‍自己的电脑当中的文件或者文件夹点右键,然后选择属性,在安全的页签里,‍‍大家会发现这个地方就可以看见 windows 对各种‍‍用户的分组,还有各个用户实行访问控制的一个界面了。‍‍

像我的电脑当中它默认是分为了这样的 4 个分组,‍‍像 users 分组当中的用户只可以对照片文件夹目录进行这样的三种操作,‍‍其他的像写入这种操作不允许的。‍‍

​

还记得刚才我们创建了一个叫做临时访客的用户吗?‍‍如果我们不想让临时访客用户访问我们的照片这个文件夹的话,‍‍那么我们可以点编辑按钮,于是会跳出一个这样的页面,然后我们再点添加,‍‍输入临时访客,然后再点确定,

​ ‍

于是在这个地方就会出现临时访客用户相关的选项。‍‍接下来我们可以选择拒绝临时访客用户对照片这个文件夹进行任何一种类型的操作。‍‍

那点上确定之后,大家会发现系统给出了一个这样的提示,拒绝项优先于允许项,‍‍也就是说临时访客用户本来它是属于 users 分组的,‍‍users 这个分组本来是允许读取文件信息的,‍‍但是我们又在临时访客这儿选择了拒绝读取这个文件。‍‍由于拒绝项的优先级高于允许项,所以虽然临时访客也属于 users 分组,‍‍但是操作系统依然会认为临时访客用户是不允许读取这个文件目录的。‍‍

​ ‍

接下来我们在这个地方切换成临时访客用户,然后尝试着打开照片这个文件夹,‍‍于是这个地方大家会发现操作系统提示我们,此时用户无权访问该文件夹,‍‍其实系统在背后做的事情就是找到了照片这个目录文件对应的 fcb‍‍然后根据 fcb 当中记录的‍‍访问权限相关的一些信息来判断临时访客用户到底有没有权限访问这个文件夹,‍‍最后发现这个用户是没有权限访问的,于是就弹出了一个这样的提示框。‍‍

​

# 小结

那么这个小节我们学习了三种文件保护的方式,口令保护、加密保护和访问控制,‍‍

口令保护和加密保护是比较容易混淆的,口令保护的口令是存放在系统当中的,‍‍然后系统会验证用户提供的口令是否正确,如果正确的话才允许用户访问这个文件

而加密保护,其实‍‍这个密码不需要保存在系统当中,只有用户自己知道另一个用户想要访问一个加密的文件的话,它需要使用‍‍相同的密码才可以对文件进行正确的解密,所以加密保护的安全性要比口令保护要更高一些,‍‍但是它所带来的加密解密的开销又需要花费一定的时间。‍‍

最后我们介绍了访问控制这种文件保护方式,‍‍绝大多数的现代操作系统都支持访问控制这种方式来保护文件,‍‍大家也可以自己动手去 windows 操作系统下面去看一下各个文件的安全属性,‍‍然后再动手折腾一下,就可以对这个部分的内容有更深的理解。

像口令保护和加密保护这两种方式的话,‍‍只要用户知道了口令或者知道了密码,用户就可以对这个文件执行所有类型的操作。‍‍但是对于访问控制这种方式来说,它可以实现更复杂的文件保护功能,它可以把‍‍用户对文件的操作分为各种不同的类型,然后不同的用户可以执行不同类型的操作所以,‍‍访问控制这种方式实现的文件保护其实也是要更灵活一些。‍‍

再一个大家需要注意的是,如果对某个目录进行了访问权限的控制,‍‍那么也需要对这个目录下面的所有文件进行相同的访问权限控制,就像刚才咱们举到的照片文件夹的例子一样,‍‍一个用户不允许访问照片文件夹那个目录,他同时也不允许访问目录下的所有的文件。‍‍

​

上次更新: 2025/5/9 14:55:39
4_1_7_文件共享
4_1_9_文件系统的层次结构

← 4_1_7_文件共享 4_1_9_文件系统的层次结构→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式