Linux 权限体系:实施代码运行时的权限限制(如 AppArmor)

梦伟酱_9213

梦伟酱_9213

2026-08-07

474人浏览

原创

apparmor 是为填补传统 unix 权限无法限制程序行为的空白而设计的进程级最小权限沙箱机制,它基于路径实施强制访问控制(mac),需完成写 profile、加载到内核、验证生效三步才真正起作用。

linux 权限体系:实施代码运行时的权限限制(如 apparmor)

Linux 权限体系中,传统 Unix 用户/组权限(rwx)仅控制“谁可以访问什么”,但无法限制“一个程序能做什么”。AppArmor 就是为填补这一空白而设计的运行时权限限制机制——它不替代用户权限,而是叠加一层基于路径的强制访问控制(MAC),让代码在启动后只能碰明确允许的资源。

AppArmor 的核心定位:进程级最小权限沙箱

它不是全局开关,而是为每个可执行文件单独配策略。比如 /usr/bin/python3 和 /opt/myapp/server 可以拥有完全不同的规则集。策略生效前提是:内核模块已启用、profile 已加载、目标进程由该 profile 覆盖。它不管你是 root 还是普通用户,只看“这个二进制正在跑,它被允许干什么”。

三步落地:写、载、验

配置真正生效必须走完这三步,缺一不可:

CMIC Skill Scanner (Linux x64)
CMIC Skill Scanner (Linux x64)

使用 auto、native 或 external 引擎审计待安装的 skill 包或归档,并可选启用 LLM 语义分析。

下载
  • 写对 profile:放在 /etc/apparmor.d/ 下,文件名按路径转点(如 /usr/local/bin/worker → usr.local.bin.worker);开头加 #include <tunables></tunables>;规则末尾带逗号;路径用绝对路径;只放真实需要的条目(例如 /var/lib/myapp/** rwk,,而非 /var/** rwk)
  • 载入内核:用 sudo apparmor_parser -r /etc/apparmor.d/usr.local.bin.worker(-r 表示替换已有规则);若报语法错,用 sudo apparmor_parser -t /etc/apparmor.d/usr.local.bin.worker 先试运行检查
  • 验证生效:运行 sudo aa-status 确认该 profile 在 “enforce mode” 列表中;再查 sudo dmesg | grep -i "apparmor.*denied",有日志说明它真在拦;没日志且服务正常,大概率已按预期工作

关键权限项怎么设才安全

一份实用的 profile 不是堆功能,而是裁剪风险面:

  • 文件权限:显式允许必要路径(/run/myapp/sock w,),同时用 deny /etc/shadow r,、deny /home/** rwx, 封死常见提权入口
  • 网络控制:只开实际用的协议和类型,例如 network inet stream,(本地 TCP),禁用 network netlink raw, 防路由劫持
  • 能力(capability):默认全禁,只加必需项,如 capability setuid,、capability dac_override,(仅当程序确实需切换用户或绕过权限检查时才放开)

容器场景下不能只靠默认策略

Docker 默认用 docker-default profile,它宽松且通用。生产环境应为关键容器指定自定义 profile:

  • profile 文件名按容器内进程路径命名(如容器里跑 /app/main,文件名为 app.main)
  • Docker 启动时加 --security-opt apparmor=app.main
  • Kubernetes 中通过 annotation:container.apparmor.security.beta.kubernetes.io/<container-name>: localhost/app.main</container-name>
  • 务必在 profile 中 deny 敏感路径:deny /proc/sys/** w,、deny /sys/firmware/** rwklx,、deny /dev/.lxc/* r,(防容器逃逸)

AppArmor 不复杂,但容易忽略验证环节。很多“权限没生效”的问题,其实只是 profile 没加载、或进程没被正确匹配到策略。盯住 aa-status 和 dmesg,比反复改配置更有效。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3710

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3213

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2293

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5510

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5182

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3073

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2585

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2799

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习