讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux AppArmor 配置与安全策略

雨墨吖_2528

雨墨吖_2528

发布时间:2026-02-18 14:33:25

|

351人浏览过

|

来源于php中文网

原创

AppArmor配置文件默认位于/etc/apparmor.d/,需按路径命名(斜杠换为点),加载后仅对新启动进程生效;用aa-status查看生效状态,apparmor_parser -r或systemctl restart apparmor重载。

linux apparmor 配置与安全策略

AppArmor 配置文件在哪?怎么确认它在生效

AppArmor 策略不是写完就自动起作用的,得先加载进内核、再让进程实际按策略跑起来。默认配置文件放在 /etc/apparmor.d/ 下,但注意:文件名必须和被保护程序的完整路径对应(比如 /usr/bin/firefox 对应 /etc/apparmor.d/usr.bin.firefox),中间斜杠要替换成点。

常见错误是改了文件却没 reload,或者 reload 了但进程没重启——策略只对新启动的进程生效。用 aa-status 能立刻看到当前哪些进程正在受保护、用了哪个 profile;如果某进程没列出来,要么没启用 profile,要么它根本没按 profile 启动(比如直接 /usr/bin/python3 script.py,而不是通过 systemd 或 wrapper 启动)。

  • 用 sudo apparmor_parser -r /etc/apparmor.d/usr.bin.python3 重载单个 profile
  • 用 sudo systemctl restart apparmor 重载全部(部分发行版不支持该 service)
  • 检查是否启用:cat /sys/module/apparmor/parameters/enabled 应输出 Y

profile 里 abstraction 和 include 有什么区别

两者都用来复用规则,但语义和加载时机不同。abstraction 是 AppArmor 内置的一组通用权限集合(比如 abstraction/python 允许 Python 解释器读取标准库路径),它被设计为“可组合、无副作用”,多个 profile 可以安全 include 同一个 abstraction。

include 则是纯文本包含,类似 C 的 #include,不做任何解析或校验——如果 included 文件里写了 deny /etc/shadow r,,那就真 deny,不会因为上下文自动调整。容易踩的坑是:误把 include 当成 abstraction 复用,结果在多个 profile 里重复包含同一段规则,导致权限叠加出错(比如意外多开了网络访问)。

  • 优先用 abstraction:它们经过测试,适配主流发行版路径
  • include 适合放自定义的通用片段,比如公司内部日志路径规则,但要确保路径不冲突
  • 路径写法:abstraction 在 /usr/share/apparmor/abstractions/,include 默认从 /etc/apparmor.d/ 开始找相对路径

为什么 aa-logprof 生成的规则总不准

aa-logprof 依赖 dmesg 或 /var/log/audit/audit.log 里的拒绝日志(APPARMOR_DENIED),但它只能看到“被拦住的请求”,看不到“本该拦但没拦”的行为。所以它倾向于过度宽松:比如某程序偶尔读 /tmp/foo.sock,aa-logprof 就会加一条 /tmp/** rw,,而不是更精确的 /tmp/foo.sock rw,。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载

真实生产环境里,得手动收紧。关键是看日志里的 operation 字段(如 open、connect)、name(路径)、profile(当前用的 profile 名)和 requested_mask(想要的权限)。别直接信 aa-logprof 推荐的 /**,尤其对 /tmp、/dev、/proc 这类目录。

  • 用 sudo aa-logprof -f /var/log/syslog 指定日志源(Ubuntu 默认走 syslog)
  • 交互时选 2(Ask again)比直接 1(Add rule)更安全
  • 生成后务必用 aa-complain /path/to/profile 先切到 complain 模式观察几天,再切 enforce

systemd 服务怎么套 AppArmor profile

systemd 不会自动给服务进程套 profile,除非显式指定。最可靠的方式是在 service unit 文件里加 AppArmorProfile=(systemd v245+),比如:

[Service]
AppArmorProfile=/etc/apparmor.d/usr.bin.mydaemon

老版本 systemd 或某些发行版(如 Ubuntu 20.04)不支持该字段,就得靠 ExecStartPre + aa-exec,但要注意:它只影响 ExecStart 启动的主进程,子进程默认继承——如果子进程 exec 了其他程序(比如调 sh -c "curl ..."),就得在 profile 里显式允许 /bin/sh 和 /usr/bin/curl,否则会被拦。

  • 确认 systemd 版本:systemd --version;低于 245 就别设 AppArmorProfile
  • 用 aa-exec -p /etc/apparmor.d/usr.bin.mydaemon -- /usr/bin/mydaemon 测试能否启动
  • profile 中必须声明 capability sys_admin, 才能操作 cgroup,否则 systemd 服务可能卡在 activating

复杂服务往往有多个二进制、临时目录、socket 路径,profile 很容易漏。建议先用 complain 模式跑满一个业务周期,再根据日志补全,别指望一次写对。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

3663

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

835

2023.10.30

磁盘配额是什么
磁盘配额是什么

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

4170

2023.06.21

如何安装LINUX
如何安装LINUX

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

3533

2023.06.29

linux find
linux find

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

2753

2023.06.30

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

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

6730

2023.07.05

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

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

6382

2023.07.06

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

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

3693

2023.07.20

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

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

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn