操作系统的访问控制
4). 访问模式
在实现自主访问控制的各种各样系统中,访问模式的应用是很广泛的。这里只介绍最常用的模式。
文件。
对文件设置的访问模式有以下几种:
读拷贝(read-copy)
该模式允许主体对客体进行读与拷贝的访问操作。在大多数系统中,把read模式作为read-copy模式来设置。从概念上讲,作为仅允许显示客体的read模式是有价值的。然而,作为一种基本的访问模式类型,要实现仅允许显示客体的read访问模式是困难的,因为它只能允许显示介质上的文件,而不允许具有存储能力。而read-copy可以仅仅限制主体对客体进行读和拷贝操作,如果主体拷贝了一个客体,那么他可以对该拷贝设置任何模式的访问权。
写删除(write-delete)
该访问模式允许主体用任何,包括扩展 (expanding)收缩(shrinking)以及删除(deleting) 的方法修改一个客体。
在不同的系统中有不同的写模式,实现主体对客体的修改。例如写附加(write-append),删除(delete),写修改(write-modify) 等。系统可以根据客体的特性,采用不同的模式。也可以将几种模式映射为一种模式,也可以映射为自主访问控制支持的最小的模式集合。也可以将所有的可能的写模式都作描述,而只将一个模式子集应用到一种特殊类型的客体。前一种方式可以简化自主访问控制与用户接口,而后者可以给出一种较为细致的访问控制方式。
执行(execute)
该模式允许主体将客体作为一种可执行文件而运行。在许多系统中,Execute模式需要Read模式。
例如在有的系统中,要求在实现动态链接过程中引进连接段(linkage section),而在连接段中常涉及常数及寻找入口点的操作,这些操作被认为是对客体文件的read操作。因此,此时需要执行某个段时,还需要有read访问模式。
Null(无效)
这种模式表示,主体对客体不具有任何访问权。在存取控制表中用这种模式可以排斥某个特定的主体。
假如一个客体是文件的话,对它的访问模式的最小集是应用于许多系统中常用的访问模式的集合,这包括read-copy,write-delete,execute,null。这些模式为文件的访问提供了一个最小但不是充分的组合。不少情况下,只用最小的模式集合是不够的。
大部分操作系统是将自主访问控制应用于客体,而不单单只用于文件。文件是一种特殊的客体。许多时候,除文件以外的客体,也被构造成文件。因此,通常根据客体的特殊结构,对它们都有某种扩充的访问模式。一般都用类似数据抽象的方式来实现它们,也就是操作系统将“扩充的”访问模式映射为基本访问模式。
目录。
如果文件系统中的文件目录是树型结构,那么树中的目录也代表一类文件。因此,对它也可以设置访问模式。通常用以下三级方式来控制对目录及和目录相应的文件的访问操作:对目录而不对文件实施访问控制;对文件而不对目录实施访问控制;对目录及文件都实施访问控制。
如果仅对目录设置控制,那么一旦授予某个主体对一个目录的访问权,它就可以访问该目录下的所有文件。当然,如果在该目录下的客体是另一个目录,那么,如果主体还想访问该子目录,它就必须获得该子目录的访问权。另外,仅对目录设置访问控制模式的方法,需要按访问类型对文件进行分组,这样要求会造成限制过多。在文件分类时还会带来新的问题。
如果仅对文件设置访问模式,这种控制可能会更细致些。仅对某个文件设置的模式与同一目录下的其它文件没有任何关系。但是,这样也有一些问题。比如,如果不对目录设置限制,那么主体可以设法浏览存储结构而看到其它文件的名字。而且在这种情况下,文件的放置没有受任何控制,结果是,文件目录的树结构失去了意义。
通常最好是对文件、目录都施以访问控制。但是,设计者要能够决定是否允许主体在访问文件时,对整个路径都可以访问。要考虑只允许访问文件本身是否是充分的。如果一个系统,允许主体访问客体,但又不允许有对该客体的父目录的访问权,那么实现起来会比较复杂。
在UNIX系统中,对某目录不具备任何访问权意味着对该目录控制下的所有子客体(文件以及子目录)都无权访问。
对目录的访问模式的最小集合是包括read与write-expand(写-扩展)。
Read
该模式允许主体看到目录的实体,包括目录名、存取控制表,以及与该目录下的文件、子目录等相应的信息。read访问模式.意味着有权访问该目录下的子客体(子目录与文件)。至于哪个主体能对它们进行访问还要视该主体自己的存取控制权限。
Write-expand(写-扩展)
此种模式允许主体在该目录下增加一个新的客体,即,允许用户在该目录下生成与删除文件或者生成与删除子目录。由于目录访问模式是对文件访问控制的扩展,因此,它取决于目录的结构,取决于系统。例如,有的系统为目录设置了三种访问模式:读状态(status),修改(modify),附加(append)。status允许主体看到目录结构及其子客体的属性。modify允许主体修改(包括删除)这些属性,而append允许主体生成新的子客体。
可以看出,操作系统在决定系统的自主访问控制中应该包括什么样的客体,以及应该为每种客体设置什么样的访问模式时,要在用户的友善性与自主访问控制机制的复杂性之间作适当的折衷。
强制访问控制
自主访问控制是保护系统资源不被非法访问的一种有效手段。但是由于它的控制是自主的,也带来了问题。于是,人们又提出了一种更强有力的访问控制手段,这就是强制访问控制。
在自主访问控制方式中,某一合法用户可以任意运行一程序来修改他拥有的文件存取控制信息,而操作系统无法区分这种修改是用户自己的操作,还是恶意攻击的特洛伊木马的非法操作。
通过强加一些不可逾越的访问限制,系统可以防止某一些类型的特洛伊木马的攻击。在强制访问控制方式中,系统对主体和客体都分配一个特殊的安全属性,而且这一属性一般不能更改,系统通过比较主体和客体的安全属性来决定一个主体是否能够访问某个客体。用户的程序不能改变他自己及任何其它客体的安全属性。强制访问控制还可以阻止某个进程共享文件,并阻止通过一个共享文件向其它进程传递信息。
强制访问控制施加给用户自己客体的严格的限制,但也使用户受到自己的限制。但是,系统为了防范特洛伊木马,必须要这么做。即便是不在存在特洛伊木马,强制访问控制也有用,它可以防止在用户无意或不负责任的操作时,泄露机密信息。强制访问控制对专用的或简单的系统是有效的,但对通用、大型系统并不那么有效。一般强制访问控制采用以下几种方法:
1. 限制访问控制。由于自主控制方式允许用户程序来修改他拥有文件的存取控制表,因而为非法者带来可乘之机。因而,系统可以不提供这一方便,在这类系统中,用户要修改存取控制表的唯一途径是请求一个特权系统调用。该调用的功能是依据用户终端输入的信息,而不是靠另一个程序提供的信息来修改存取控制信息。
2. 过程控制。在通常的计算机系统中,只要系统允许用户自己编程,就没办法杜绝特洛伊木马。但可以对其过程采取某些措施,这种方法称为过程控制。例如,警告用户不要运行系统目录以外的任何程序。提醒用户注意,如果偶然调用一个其它目录的文件时,不要做任何动作,等等。需要说明的一点是,这些限制取决于用户本身执行与否。因而,自愿的限制很容易变成实际上没有限制。
3. 系统限制。显然,实施的限制最好是由系统自动完成。要对系统的功能实施一些限制。比如,限制共享文件,但共享文件是计算机系统的优点,所以是不可能加以完全限制的。再者,就是限制用户编程。事实上,有许多不需编程的系统都是这样做的。
不过这种做法只适用于某些专用系统。在大型的,通用系统中,编程能力是不可能去除的。在网络中也不行,在网络中一个没有编程能力的系统。可能会接收另一个具有编程能力的系统发出的程序。有编程能力的网络系统可以对进入系统的所有路径进行分析,并采取一定措施。这样就可以增加特洛伊木马攻击的难度。
最新评论:
热门文章
RSS订阅






收 藏
推 荐