操作系统权限模型:DAC与MAC
在操作系统安全中,DAC 和 MAC 是两种经典的权限控制模型,它们的核心区别在于**“谁来决定权限、权限能否被随意更改”**。
一、DAC(Discretionary Access Control,自主访问控制)
核心特点
- 资源所有者决定权限
- 权限可以被用户自由授予、修改或传播
- 灵活,但安全性相对较弱
工作方式
- 每个对象(文件、目录)都有一个所有者
- 所有者可以决定谁能访问以及访问方式(读 / 写 / 执行)
- 常见实现:
- Linux/Unix 文件权限
rwx - ACL(访问控制列表)
- Linux/Unix 文件权限
示例
-rw-r----- userA dev file.txt
userA可以把文件权限给userBuserB还可以再授权给其他人(如果权限允许)
优点
✅ 灵活、易用
✅ 适合通用操作系统和日常办公环境
缺点
❌ 容易被滥用
❌ 一旦用户被攻破,权限可能被随意扩散
二、MAC(Mandatory Access Control,强制访问控制)
核心特点
- 系统强制决定权限
- 用户不能随意更改权限
- 以安全策略为中心,强调“不可越权”
工作方式
- 每个主体(用户/进程)和客体(文件/资源)都有安全级别或标签
- 访问是否允许,由系统根据全局安全策略判断
- 用户即使是文件“所有者”,也不能更改安全级别
常见实现
- SELinux(Linux)
- AppArmor(部分 MAC 特性)
- 军事 / 政府系统的多级安全模型
示例(概念性)
- 文件标签:
Secret - 进程标签:
Confidential - 规则:低级别不能读高级别数据
即使你拥有文件,也可能:
- 不能读
- 不能拷贝
- 不能降级安全标签
优点
✅ 安全性极高
✅ 防止权限扩散和越权访问
缺点
❌ 配置复杂
❌ 使用和调试成本高
三、DAC 与 MAC 对比总结
| 对比项 | DAC | MAC |
|---|---|---|
| 权限决定者 | 资源所有者 | 系统安全策略 |
| 用户能否改权限 | ✅ 可以 | ❌ 不可以 |
| 灵活性 | 高 | 低 |
| 安全性 | 中 | 高 |
| 常见场景 | Linux/Windows 日常系统 | SELinux、军工/政府系统 |
| 防止越权能力 | 弱 | 强 |
四、一句话总结
- DAC:我拥有 → 我说了算
- MAC:系统规定 → 谁都不能破
如果你愿意,我也可以:
- 用 Linux 实例对比 DAC / MAC
- 结合 SELinux 讲 MAC 的实际工作流程
- 对比 RBAC(基于角色访问控制)
随时告诉我 👍