操作系统访问控制与保护机制深度解析
发布时间: 2025-08-14 00:51:22 阅读量: 2 订阅数: 11 


操作系统概念:理论与实践
### 操作系统访问控制与保护机制深度解析
#### 1. 访问矩阵的实现
在操作系统的安全机制中,访问矩阵的实现方式多种多样。其中,基于能力的保护系统是重要的一类,Mach 操作系统就采用了基于能力保护的版本。下面详细介绍几种常见的实现方式。
##### 1.1 锁 - 钥匙机制
锁 - 钥匙机制是访问列表和能力列表之间的一种折衷方案。每个对象都有一个由唯一位模式组成的锁列表,而每个域都有一个由唯一位模式组成的钥匙列表。只有当一个域拥有与对象的某个锁相匹配的钥匙时,在该域中执行的进程才能访问该对象。与能力列表一样,域的钥匙列表由操作系统管理,用户不能直接检查或修改钥匙(或锁)列表。
##### 1.2 不同实现方式的比较
|实现方式|优点|缺点|
| ---- | ---- | ---- |
|全局表|实现简单|表格可能很大,且难以利用对象或域的特殊分组|
|访问列表|直接对应用户需求,用户创建对象时可指定访问权限|特定域的访问权限信息不集中,确定每个域的访问权限困难,每次访问对象都需搜索访问列表,大系统中搜索耗时|
|能力列表|有助于为给定进程定位信息,只需验证能力的有效性|能力撤销可能效率低下|
|锁 - 钥匙机制|有效且灵活,钥匙可在域间自由传递,可通过更改对象的锁来撤销访问权限| - |
大多数系统采用访问列表和能力的组合。当进程首次尝试访问对象时,会搜索访问列表。若访问被拒绝,则会出现异常;否则,会创建一个能力并附加到进程上。后续访问使用该能力来快速证明访问被允许,最后一次访问后,能力被销毁。例如在 UNIX 系统中,每个文件都有一个关联的访问列表。当进程打开文件时,会搜索目录结构找到文件,检查访问权限并分配缓冲区,这些信息会记录在与进程关联的文件表的新条目中,操作返回该文件在文件表中的索引,后续对文件的操作都通过该索引进行。文件关闭时,文件表条目被删除,用户只能访问已打开的文件,且每次访问都会检查访问权限。
#### 2. 访问权限的撤销
在动态保护系统中,有时需要撤销不同用户对共享对象的访问权限。关于撤销,会产生以下几个问题:
- **立即撤销与延迟撤销**:撤销是立即发生还是延迟发生?如果是延迟撤销,能否知道何时发生?
- **选择性撤销与一般性撤销**:撤销对象的访问权限时,是影响所有有该对象访问权限的用户,还是可以指定特定用户组?
- **部分撤销与全部撤销**:能否撤销对象的部分权限,还是必须撤销所有权限?
- **临时撤销与永久撤销**:访问权限能否永久撤销(即撤销后不再可用),还是可以撤销后再次获取?
对于访问列表方案,撤销很容易。只需搜索访问列表,删除要撤销的访问权限即可。撤销是立即的,并且可以是一般的、选择性的、全部的、部分的、永久的或临时的。而能力的撤销则困难得多,因为能力分布在整个系统中,需要先找到它们才能撤销。以下是几种实现能力撤销的方案:
- **重新获取**:定期从每个域中删除能力。如果进程想使用某个能力,可能会发现该能力已被删除,然后尝试重新获取。如果访问权限已被撤销,进程将无法重新获取该能力。
- **反向指针**:每个对象维护一个指向与其关联的所有能力的指针列表。需要撤销时,可通过这些指针更改能力。MULTICS 系统采用了这种方案,它通用性强,但实现成本高。
- **间接引用**:能力不直接指向对象,而是间接指向。每个能力指向全局表中的一个唯一条目,该条目再指向对象。通过搜索全局表并删除所需条目来实现撤销。当尝试访问时,会发现能力指向非法表条目。CAL 系统采用了这种方案,但不允许选择性撤销。
- **钥匙**:钥匙是与能力关联的唯一位模式,在能力创建时定义,拥有该能力的进程不能修改或检查。每个对象关联一个主钥匙,可通过 set - key 操作定义或替换。能力创建时,当前主钥匙的值与能力关联。使用能力时,会将其钥匙与主钥匙比较,匹配则允许操作,否则引发异常。通过 set - key 操作替换主钥匙可使该对象的所有先前能力无效。若为每个对象关联一个钥匙列表,则可实现选择性撤销。还可将所有钥匙分组到一个全局钥匙表中,能力只有在其钥匙与全局表中的某个钥匙匹配时才有效,通过从表中删除匹配的钥匙来实现撤销,这种方案提供了最大的灵活性。
#### 3. 基于角色的访问控制
在文件系统中,每个文件和目录都会分配所有者、组或用户列表,并为这些实体分配访问控制信息。类似的功能也可添加到计算机系统的其他方面,如 Solaris 10 及更高版本引入了基于角色的访问控制(RBAC)。RBAC 通过明确添加最小特权原则来增强操作系统的保护。它围绕特权展开,特权是执行系统调用或使用系统调用选项(如以写访问权限打开文件)的权利。特权可分配给进程,限制其仅执行工作所需的访问。特权和程序也可分配给角色,用户根据分配给角色的密码分配角色或获取角色。这样,用户可以获取一个启用特定特权的角色,从而运行程序完成特定任务,这种实现方式降低了超级用户和 setuid 程序带来的安全风险。
#### 4. 强制访问控制(MAC)
传统上,操作系统使用自主访问控制(DAC)来限制对文件和其他系统对象的访问。在 DAC 中,访问基于单个用户或组的身份进行控制。
0
0
相关推荐










