当前位置: 首页 > news >正文

dac/cap/lsm

DAC 管基础,CAP 补 DAC,LSM 管全局最终决策。

DAC 先过 → CAP 兜底 → LSM 最后把关

Capability(CAP):Linux 原生特权拆分机制,不属于 LSM 框架

LSM:内核安全钩子框架,用于实现 MAC(SELinux/AppArmor 等)

DAC(Discretionary Access Control)

本质:主体客体的身份匹配 + 权限位许可,是操作系统最基础的自主权限规则。

  • 主体:进程 UID/GID
  • 客体:文件 inode 的 UID/GID、rwx、ACL
  • 特点:所有者自主决定权限,控制松散。

CAP(Capability)

本质:对 root 特权的细粒度拆分,是 DAC 检查失败时的豁免机制。

  • 不是独立权限层,而是DAC 的补丁与兜底
  • 让进程不必持有完整 root 即可绕过部分 DAC 限制
  • 核心:CAP_DAC_OVERRIDECAP_DAC_READ_SEARCH

LSM(Linux Security Module)

本质:内核提供的强制访问控制(MAC)框架钩子,是权限检查的最终防线。

  • 提供安全策略扩展接口
  • 无论 DAC/CAP 是否通过,LSM 都可最终拒绝
  • 实现:SELinux、AppArmor、Landlock 等

核心对比

维度DAC(自主访问控制)CAP(能力)LSM(安全模块)
全称Discretionary Access ControlCapabilityLinux Security Module
本质传统 UGO/rwx、ACL超级权限细粒度拆分强制访问控制(MAC)框架
检查顺序最先检查DAC 失败时才检查(兜底)最后检查(最终防线)
控制权文件所有者可自由分配权限系统 / 管理员分配进程能力安全策略强制管控,用户无法绕过
代表实现文件权限位、POSIX ACLCAP_DAC_OVERRIDESELinux、AppArmor、Landlock
作用基础权限隔离避免全局 root,精细化特权强制策略,最小权限、安全增强
失败处理失败则进入 CAP 检查无对应 CAP 则权限拒绝失败则直接拒绝访问

标准检查顺序(文件访问场景)

开始 ↓ DAC 检查 ├─── 通过 → 去 LSM └─── 失败 → 查 CAP ├─── 有 CAP → 去 LSM └─── 无 CAP → 拒绝 ↓ LSM 检查 ├─── 通过 → 允许 └─── 失败 → 拒绝

前置检查

  • 文件系统只读、文件不可变等基础校验(IS_RDONLY/IS_IMMUTABLE)。
  • 文件系统自定义权限钩子(如 Ext4 加密)。

DAC 检查(自主访问控制)

  • 核心:generic_permission()fs/namei.c)。
  • 流程:
    1. 匹配进程fsuid/gid与文件uid/gid,取出对应权限位(owner/group/other)。
    2. 检查 POSIX ACL(若启用)。
    3. 权限位与操作掩码(mask)匹配校验。
  • 结果:DAC 不通过 → 进入 CAP 能力覆盖检查

CAP 能力覆盖(Capability Override)

  • 仅在DAC 失败时触发。
  • 关键能力:
    • CAP_DAC_OVERRIDE:完全绕过文件 DAC 检查(读 / 写 / 执行)。
    • CAP_DAC_READ_SEARCH:仅允许目录读 / 搜索,绕过对应 DAC 限制。
  • 逻辑:capable_wrt_inode_uidgid(..., CAP_DAC_OVERRIDE)→ 具备则直接通过,返回 0。

LSM 检查(强制访问控制)

  • 入口:security_inode_permission()security/security.c)。
  • 触发时机:DAC + CAP 均通过后,才执行 LSM 钩子(如 SELinux/AppArmor)。
  • 逻辑:遍历所有注册的 LSM 模块,执行策略检查;任一模块拒绝则返回-EACCES

完整调用链(以open为例)

sys_openat └── may_open └── inode_permission ├── 文件系统自定义权限(如Ext4) └── __inode_permission ├── do_inode_permission │ ├── generic_permission(DAC) │ │ ├── UID/GID匹配 + 权限位检查 │ │ ├── POSIX ACL检查 │ │ └── 【DAC失败 → 检查CAP_DAC_OVERRIDE】 │ └── 【DAC/CAP通过 → 继续】 └── security_inode_permission(LSM) └── 执行SELinux/AppArmor等策略检查

关键结论

  • 顺序固定DAC 优先 → CAP 覆盖(仅 DAC 失败时) → LSM 最后
  • CAP 是 DAC 的旁路:不是独立检查层,仅用于绕过 DAC 限制。
  • LSM 是最终防线:即使 DAC/CAP 都通过,LSM 仍可拒绝访问。
  • mmap 例外已修复:内核 3.15+ 统一为 DAC→CAP→LSM 顺序。
http://www.jsqmd.com/news/496620/

相关文章:

  • 开源多模态向量模型GME-Qwen2-VL-2B:Sentence Transformers + FAISS 构建亿级向量库教程
  • Vue3 + TypeScript变量、方法命名建议
  • VSCode 2026低代码插件实战指南:7步搭建企业级业务系统,无需一行JavaScript
  • Realsense D435i+Kalibr标定实战:如何用Apriltag棋盘格获得亚毫米级精度
  • 从协议到工具:深入理解Impacket中的NTLM认证机制
  • SiameseAOE中文-base参数详解:learning_rate warmup_ratio 与早停策略配置
  • gte-base-zh文本嵌入模型:5分钟快速部署与相似度比对实战
  • AudioLDM-S真实体验:生成机械键盘打字声、猫咪呼噜声,效果惊艳
  • STM32F1硬件RTC掉电保存实战:RT-Thread下修改驱动解决年月日丢失问题
  • 碳硅共生认知场论:从量子化、重整化群流到认知引力透镜的系统性实验验证(沙地实验)
  • 探讨2026年PET塑钢带打包机厂家,哪家口碑好价格合理值得选购 - mypinpai
  • 5分钟搞定:用Jenkins+Docker+K8s实现Pass平台自动化部署(附完整脚本)
  • Face Analysis WebUI入门指南:零基础实现人脸属性智能分析
  • Carla PythonAPI实战:10分钟搞定交通流生成与天气动态调整(附避坑指南)
  • Anchor-Free检测器在工业质检中的特殊优化:以CenterNet产线缺陷检测为例
  • 从SquareLine Studio到IMX6uLL:LVGL嵌入式UI开发全流程解析
  • 鼎捷T100开发技巧:单身资料开窗多选插入的避坑指南
  • 2024 年特医食品数据分析实战:从 PDF 解析到个性化推荐系统构建
  • [python]lightgbm安装后测试代码
  • 新手避坑指南:Unity3D物体缩放时Transform.localScale的3个常见错误
  • MAI-UI-8B使用教程:Web界面访问与Python API集成
  • MicroPython 开发ESP32应用实战 之 UART 中断机制与多设备通信优化
  • 开源方案:利用万象熔炉API为LaTeX论文创建动态插图库
  • DeOldify处理特殊材质与纹理效果展示:丝绸、金属、木材的色彩还原度
  • Excel敏感标签避坑指南:用Python跳过Sensitivity Label弹窗的3种实战方案
  • #训练营# 基于GD32E230与CH342F的便携式多功能调试工具:简易示波器+双串口+交换机Console(DB9/蓝牙)
  • 2026年服务器回收厂家价格对比,鑫达万创性价比更高 - myqiye
  • [原创]心血管支架仿真:从力学分析到临床决策的虚拟桥梁
  • Python 感知机:原理、实现与核心局限
  • WAN2.2文生视频问题解决:画面模糊、动作卡顿、中文不生效怎么办?