DAC(Discretionary Access Control)

相比于 SELinux,传统的 DAC(Discretionary Access Control,自主访问控制) 是 Linux/Unix 系统中经典的权限管理机制。

DAC 的核心特点

基于所有者的权限控制:

  • 文件/资源的所有者可以自主决定谁能访问

  • 使用用户(user)、组(group)、其他(others)的读、写、执行权限

  • 例如:rw-r--r-- 这样的权限位

主要问题:

  1. 权限过于灵活 - root 用户拥有几乎无限的权限

  2. 容易被滥用 - 进程继承了启动它的用户的所有权限

  3. 无法细粒度控制 - 如果一个程序被入侵,攻击者就获得了该用户的所有权限

SELinux 的 MAC 相比 DAC 的优势

SELinux 使用 MAC(Mandatory Access Control,强制访问控制):

  • 即使是 root 用户也受到策略限制

  • 每个进程和文件都有安全上下文(context)

  • 根据预定义的安全策略强制执行访问控制

  • 提供"最小权限原则" - 进程只能访问完成任务所需的资源

这里阐述两个概念一个是MAC一个是LSM,有人喜欢叫selinux叫lsm安全检查有人喜欢叫MAC, MAC具体是指的是强制安全访问,他会给系统里面的资源和主体打上安全标签,然后按照预订好策略进行访问控制.而LSM是linux的安全模块,是一个linux提供的框架,可以使得selinux这类安全框架可以以模块的形式插入内核,不用大规模的修改内核代码.

DAC 源代码分析

DAC 的实现主要在 Linux 内核源码中,关键文件包括: