《访问控制模型与权限管理》
第4章 自主访问控制(DAC)
4、自主访问控制(DAC)
4.1 DAC 的原理
自主访问控制(Discretionary Access Control, DAC) 是一种基于用户身份的访问控制模型。其核心思想是:资源的拥有者(Owner)有权自主决定谁可以访问该资源,以及授予何种访问权限。系统根据用户或用户组所属的身份来限制对客体的访问,而权限的传递与委派完全由资源所有者控制。
图4-1 DAC 原理示意:所有者自主决定权限分配
4.2 所有者决定权限
在 DAC 模型中,资源的创建者自动成为该资源的所有者。所有者拥有对该资源的最高控制权,可以:
- 授予权限:允许其他用户或用户组对资源进行读(r)、写(w)、执行(x)等操作。
- 撤销权限:收回已授予的访问权限。
- 转移所有权:将资源的所有权转让给其他用户(部分系统支持)。
- 修改权限属性:更改资源的访问控制列表(ACL)或权限位。
图4-2 所有者权限操作示意
4.3 典型实现:Unix/Linux 文件权限 rwx
Unix/Linux 系统是 DAC 模型的经典实现。每个文件和目录都关联一个所有者(Owner)和一个组(Group),权限分为三组:
| 权限类别 | 符号 | 含义 | 数值 |
|---|---|---|---|
| 所有者 (User) | r | 读取文件内容 / 列出目录内容 | 4 |
| w | 修改文件 / 在目录中创建或删除文件 | 2 | |
| x | 执行文件 / 进入目录 | 1 | |
| 组 (Group) | r | 同组用户可读 | 4 |
| w | 同组用户可写 | 2 | |
| x | 同组用户可执行 | 1 | |
| 其他 (Others) | r | 其他用户可读 | 4 |
| w | 其他用户可写 | 2 | |
| x | 其他用户可执行 | 1 |
权限表示例:
# 查看文件权限
$ ls -l myfile.txt
-rw-r--r-- 1 alice staff 1024 Apr 10 10:30 myfile.txt
# 权限位分解:
# - rw- r-- r--
# 所有者: rw- (6) 组: r-- (4) 其他: r-- (4)
# 所有者 alice 可读写,同组用户可读,其他用户可读
# 修改权限(所有者操作)
$ chmod u+x myfile.txt # 所有者添加执行权限
$ chmod 755 myfile.txt # 设置权限为 rwxr-xr-x
图4-3 Unix/Linux rwx 权限位结构示意
4.4 优缺点分析
| 优点 | 缺点 |
|---|---|
|
|
图4-4 DAC 优缺点对比示意
4.5 小结
自主访问控制(DAC)以其灵活、简单、用户友好的特点,在个人计算机和中小型系统中得到广泛应用。Unix/Linux 的 rwx 权限模型是其典型代表。然而,DAC 在安全性、集中管控方面的不足,使其难以满足企业级和高安全环境的需求。在实际应用中,DAC 常与强制访问控制(MAC)或基于角色的访问控制(RBAC)结合使用,以构建更完善的权限管理体系。