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操作系统下面去看一下各个文件的安全属性,然后再动手折腾一下,就可以对这个部分的内容有更深的理解。
像口令保护和加密保护这两种方式的话,只要用户知道了口令或者知道了密码,用户就可以对这个文件执行所有类型的操作。但是对于访问控制这种方式来说,它可以实现更复杂的文件保护功能,它可以把用户对文件的操作分为各种不同的类型,然后不同的用户可以执行不同类型的操作所以,访问控制这种方式实现的文件保护其实也是要更灵活一些。
再一个大家需要注意的是,如果对某个目录进行了访问权限的控制,那么也需要对这个目录下面的所有文件进行相同的访问权限控制,就像刚才咱们举到的照片文件夹的例子一样,一个用户不允许访问照片文件夹那个目录,他同时也不允许访问目录下的所有的文件。