文件共享
概念
系统应允许多个用户(进程)共享同一份文件。这样,在系统中只需保留该共享文件的一份副本。
基于有向无循环图实现文件共享
在严格的树形结构目录中,每个文件只允许有一个父目录,父目录可以有效地拥有该文件,其它用户要想访问它,必须经过其属主目录来访问该文件。
利用索引结点实现文件共享
文件的物理地址及其它的文件属性等信息,不再是放在目录项中,而是放在索引结点中。
在文件目录中只设置文件名及指向相应索引结点的指针。
不同用户的文件目录虽不同,但都根据索引节点指向同一物理区的文件,实现共享。
利用符号链接实现文件共享
允许一个文件或子目录有多个父目录,但其中仅有一个作为主(属主)父目录,其它的几个父目录都是通过符号链接方式与之相链接。
将要访问的文件(不在本目录下)的路径信息制作为一个LINK型文件,加入自身目录,访问该LINK文件时,系统根据LINK的路径访问文件真正的位置。
优点
在利用符号链方式实现文件共享时,只是文件主才拥有指向其索引结点的指针;而共享该文件的其他用户则只有该文件的路径名,并不拥有指向其索引结点的指针。这样,也就不会发生在文件主删除一共享文件后留下一悬空指针的情况。当文件的拥有者把一个共享文件删除后,如果其他用户又试图通过符号链去访问一个已被删除的共享文件,则会因系统找不到该文件而使访问失败,于是再将符号链删除,此时不会产生任何影响。
问题
当其他用户去读共享文件时,系统是根据给定的文件路径名逐个分量(名)地去查找目录,直至找到该文件的索引结点。因此,在每次访问共享文件时,都可能要多次地读盘。这使每次访问文件的开销甚大,且增加了启动磁盘的频率。
此外,要为每个共享用户建立一条符号链,而由于链本身实际上是一个文件,尽管该文件非常简单,却仍要为它配置一个索引结点,这也要耗费一定的磁盘空间。
文件保护
(1) 人为因素——存取控制机制
(2) 系统因素——系统容错技术
(3) 自然因素——建立后备系统
域
“域”是进程对一组对象访问权的集合,进程只能在指定域内执行操作。
静态域
在进程的整个生命期中,其可用资源是固定的
动态域
可将进程的运行分为若干个阶段,其每个阶段联系着一个域,这样便可根据运行的实际需要来规定在进程运行的每个阶段中所能访问的对象
访问矩阵
行代表域,列代表对象,矩阵中的每一项是由一组访问权组成的。
每一项访问权access(i, j)定义了在域Di中执行的进程能对对象Qj所施加的操作集。
拷贝权
将在某个域中所拥有的访问权(access(i, j))扩展到同一列的其它域中,为进程在其它的域中也赋予对同一对象的访问权(access(k, j))。
为同一对象添加不同域的访问权。
所有权
增删同一对象的不同域访问权
控制权
改变矩阵内同一行中(域中)的各项访问权,亦即,用于改变在某个域中运行的进程对不同对象的访问权的。
访问矩阵的实现
访问控制表
对访问矩阵按列(对象)划分,为每一列建立一张访问控制表ACL。
在该表中,已把矩阵中属于该列的所有空项删除,此时的访问控制表是由一有序对(域,权集)所组成的。
由于在大多数情况下,矩阵中的空项远多于非空项,因而使用访问控制表可以显著地减少所占用的存储空间,并能提高查找速度。
访问权限表
把访问矩阵按行(即域)划分,便可由每一行构成一张访问权限表。
这是由一个域对每一个对象可以执行的一组操作所构成的表。表中的每一项即为该域对某对象的访问权限。