文件系统接口:访问控制与内存映射技术解析
立即解锁
发布时间: 2025-08-14 00:51:17 阅读量: 2 订阅数: 11 


操作系统概念:理论与实践
# 文件系统接口:访问控制与内存映射技术解析
## 1. 文件访问控制的基本概念
在多用户系统中,文件保护至关重要,而访问控制是实现文件保护的常见方法。其核心思想是根据用户身份来决定对文件或目录的访问权限。为了实现这一目标,通常会为每个文件和目录关联一个访问控制列表(ACL),该列表详细列出了用户姓名以及每个用户被允许的访问类型。
当用户请求访问特定文件时,操作系统会检查该文件关联的访问列表。若用户在列表中且请求的访问权限被允许,那么访问将被批准;反之,则会发生保护违规,用户的访问请求将被拒绝。
### 1.1 访问控制列表的优缺点
访问控制列表的优点在于能够实现复杂的访问方法。然而,它也存在明显的问题,主要体现在列表长度方面。如果要允许所有人读取文件,就必须列出所有具有读取权限的用户,这会带来两个不良后果:
- **构建列表繁琐**:尤其是在事先不知道系统中所有用户列表的情况下,构建这样的列表将是一项既繁琐又无回报的任务。
- **目录项管理复杂**:原本固定大小的目录项,现在必须变为可变大小,这会导致更复杂的空间管理问题。
### 1.2 用户分类与简化访问控制列表
为了解决访问控制列表长度的问题,许多系统将用户分为三类:
- **所有者**:创建文件的用户即为所有者。
- **组**:共享文件且需要相似访问权限的一组用户,也称为工作组。
- **其他**:系统中的所有其他用户。
目前,较为常见的做法是将访问控制列表与上述更通用(且易于实现)的所有者、组和其他用户的访问控制方案相结合。例如,Solaris 默认使用这三个类别进行访问控制,但在需要更精细的访问控制时,允许为特定文件和目录添加访问控制列表。
### 1.3 示例说明
假设 Sara 正在撰写一本新书,她聘请了三名研究生(Jim、Dawn 和 Jill)来协助该项目。书籍的文本存储在名为 `book.tex` 的文件中,该文件的保护策略如下:
- **Sara**:应能够对文件执行所有操作。
- **Jim、Dawn 和 Jill**:只能读取和写入文件,不允许删除文件。
- **其他用户**:只能读取文件,不能写入文件。Sara 希望尽可能多的人阅读文本以获取反馈。
## 2. UNIX 系统中的权限设置
在 UNIX 系统中,目录保护和文件保护的处理方式类似。每个文件和目录都关联三个字段:所有者、组和其他用户,每个字段由三个位 `rwx` 组成,其中 `r` 控制读取访问,`w` 控制写入访问,`x` 控制执行访问。
### 2.1 权限示例
以下是一个 UNIX 环境中的目录列表示例:
| 权限 | 链接数 | 所有者 | 组 | 大小(字节) | 最后修改日期 | 文件名 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| -rw-rw-r-- | 1 | pbg | staff | 31200 | Sep 3 08:30 | intro.ps |
| drwx------ | 5 | pbg | staff | 512 | Jul 8 09.33 | private/ |
| drwxrwxr-x | 2 | pbg | staff | 512 | Jul 8 09:35 | doc/ |
| drwxrwx--- | 2 | jwg | student | 512 | Aug 3 14:13 | student-proj/ |
| -rw-r--r-- | 1 | pbg | staff | 9423 | Feb 24 2017 | program.c |
| -rwxr-xr-x | 1 | pbg | staff | 20471 | Feb 24 2017 | program |
| drwx--x--x | 4 | tag | faculty | 512 | Jul 31 10:31 | lib/ |
| drwx------ | 3 | pbg | staff | 1024 | Aug 29 06:52 | mail/ |
| drwxrwxrwx | 3 | pbg | staff | 512 | Jul 8 09:35 | test/ |
列表的第一个字段描述了文件或目录的保护信息。如果第一个字符是 `d`,则表示这是一个子目录。此外,还显示了文件的链接数、所有者姓名、组名、文件大小(以字节为单位)、最后修改日期以及文件名(可选扩展名)。
### 2.2 实现特定保护策略
为了实现上述 `book.tex` 文件的保护策略,需要创建一个新组,例如 `text`,并将 Jim、Dawn 和 Jill 加入该组。然后,将组名 `text` 与文件 `book.tex` 关联,并根据策略设置访问权限。
### 2.3 临时访问权限与访问控制列表的结合
假设 Sara 希望给一位访客临时访问第 1 章的权限。由于访客不能加入 `text` 组(否则将获得所有章节的访问权限),且一个文件只能属于一个组,Sara 无法为第 1 章添加另一个组。但通过访问控制列表功能,可以将访客添加到第 1 章的访问控制列表中。
### 2.4 权限与访问控制列表的管理
为了使这种保护方案正常工作,必须严格控制权限和访问列表。在 UNIX 系统中,组的创建和修改只能由设施管理员(或任何超级用户)进行,通过人为交互来实现控制。
### 2.5 权限表示与问题
在 UNIX 系统中,使用三个三位字段 `rwx` 来定义保护,每个字段分别对应文件所有者、文件组和其他用户。在这种方案下,每个文件需要九个位来记录保护信息。例如,对于 `book.tex` 文件,其保护字段如下:
- **所有者 Sara**:所有位都设置。
- **组 `text`**:`r` 和 `w` 位设置。
- **其他用户**:仅 `r` 位设置。
然而,将不同的访问控制方法结合起来会带来一些困难。在用户界面方面,用户必须能够判断文件是否设置了可选的 ACL 权限。例如,在 Solaris 中,会在常规权限后面附加一个 “+” 号,如 `19 -rw-r--r--+ 1 jim staff 130 May 25 22:13 file1`。同时,还需要使用单独的命令 `setfacl` 和 `getfacl` 来管理 ACL。
另外,当权限和 ACL 发生冲突时,需要确定优先级。例如,如果 Walter 属于某个文件的组,该组具有读取权限,但文件的 ACL 授予 Walter 读写权限,那么 Walter 的写入请求应该被允许还是拒绝呢?Solaris 等操作系统会优先考虑 ACL(因为它们更精细且默认不分配),遵循特异性优先的一般规则。
## 3. 其他保护方法
除了访问控制列表,还有其他保护文件的方法。其中一种是为每个文件关联一个密码,就像通过密码控制对计算机系统的访问一样,也可以用同样的方式控制对每个文件的访问。
### 3.1 密码保护的优缺点
如果密码是随机选择且经常更改的,这种方案可能有效地限制对文件的访问。但使用密码也有一些缺点:
- **记忆负担大**:用户需要记住的密码数量可能会变得很多,使得该方案不切实际。
- **安全性问题**:如果所有文件都使用同一个密码,一旦密码被发现,所有文件都将可被访问,保护是全有或全无的。
### 3.2 分区或文件加密
为了解决上述问题,一些系统允许用户为子目录而不是单个文件关联密码。更常见的是,对分区或单个文件进行加密提供了强大的保护,但密码管理是关键。
### 3.3 多级目录结构中的保护
在多级目录结构中,不仅需要保
0
0
复制全文
相关推荐










