操作系统权限模型:DAC与MAC

操作系统权限模型:DAC与MAC

在操作系统安全中,DACMAC 是两种经典的权限控制模型,它们的核心区别在于**“谁来决定权限、权限能否被随意更改”**。


一、DAC(Discretionary Access Control,自主访问控制)

核心特点

  • 资源所有者决定权限
  • 权限可以被用户自由授予、修改或传播
  • 灵活,但安全性相对较弱

工作方式

  • 每个对象(文件、目录)都有一个所有者
  • 所有者可以决定谁能访问以及访问方式(读 / 写 / 执行)
  • 常见实现:
    • Linux/Unix 文件权限 rwx
    • ACL(访问控制列表)

示例

-rw-r----- userA dev file.txt  
  • userA 可以把文件权限给 userB
  • userB 还可以再授权给其他人(如果权限允许)

优点

✅ 灵活、易用
✅ 适合通用操作系统和日常办公环境

缺点

❌ 容易被滥用
❌ 一旦用户被攻破,权限可能被随意扩散


二、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(基于角色访问控制)

随时告诉我 👍