三二互联专业提供速度最快最稳定的美国服务器、香港服务器。中美直连,亚洲优化![ 代理登陆 ] [ 付款方式 ] [ 找回密码 ][ 电子协议责任书 ]
硬件资源保障

采用高配品牌服务器

主流强悍CPU配置

确保服务高速稳定运行

中美直连线路

中美直连亚洲优化

采用中国CN2骨干网络

保证速度飞快稳定高效

如何查看AppArmor配置文件中允许的系统调用?

美国、香港服务器

如何查看AppArmor配置文件中允许的系统调用?

12-30   来源:

 要查看 AppArmor 配置文件中允许的系统调用,核心是直接解析配置文件内容或通过工具提取 syscall 规则,以下是针对 Ubuntu 24.04 的两种实操方法,覆盖单个配置文件和全局规则的查询场景:

一、方法 1:直接查看配置文件(最精准)
AppArmor 配置文件中,允许的系统调用通过 syscall 关键字声明,直接读取配置文件即可提取相关规则,步骤如下:
1. 定位目标程序的配置文件
配置文件默认存放在 /etc/apparmor.d/,命名规则为程序绝对路径替换 / 为 .,例如:
程序路径 /usr/local/bin/myapp → 配置文件 /etc/apparmor.d/usr.local.bin.myapp
系统程序 nginx → 配置文件 /etc/apparmor.d/usr.sbin.nginx
2. 提取 syscall 规则
使用 grep 命令过滤配置文件中包含 syscall 的行,直接查看允许的系统调用:
bash
运行
# 通用命令格式:grep -n "syscall" /etc/apparmor.d/[配置文件名]
sudo grep -n "syscall" /etc/apparmor.d/usr.local.bin.myapp
示例输出与解读
假设配置文件中包含以下系统调用规则,执行上述命令后输出:
plaintext
8:    syscall openat, read, write, close,
12:    syscall socket args=(domain=AF_INET, type=SOCK_STREAM),
13:    syscall connect,
第 8 行:允许程序执行 openat、read、write、close 4 个系统调用;
第 12 行:允许 socket 调用,且仅支持创建 IPv4 TCP 套接字;
第 13 行:允许 connect 调用(用于网络连接)。
补充:查看包含类别的系统调用
若配置文件中使用了系统调用类别(如 @file、@net),需先查看类别对应的具体调用列表:
bash
运行
# 查看 @file 类别包含的系统调用
sudo grep -A 50 "@file" /etc/apparmor.d/abi/3.0
# 查看 @net 类别包含的系统调用
sudo grep -A 50 "@net" /etc/apparmor.d/abi/3.0
说明:系统调用类别定义在 /etc/apparmor.d/abi/[版本] 文件中,Ubuntu 24.04 默认使用 3.0 版本。
二、方法 2:结合 AppArmor 工具验证已加载的规则
若配置文件已加载到内核,可通过 aa-status 和 apparmor_parser 工具,结合日志确认生效的系统调用规则。
1. 确认配置文件是否已加载
bash
运行
# 查看已加载的 AppArmor 配置文件
sudo aa-status
输出示例中,若包含 /usr/local/bin/myapp (enforce),说明该程序的配置已加载。
2. 检查配置文件的完整规则(含系统调用)
使用 apparmor_parser 解析配置文件,输出格式化后的完整规则,便于筛选系统调用:
bash
运行
# -S 参数:显示简化的规则;-r 参数:仅解析不加载
sudo apparmor_parser -S -r /etc/apparmor.d/usr.local.bin.myapp | grep "syscall"
3. 通过日志验证系统调用拦截情况
若程序执行了未允许的系统调用,会在 /var/log/syslog 中生成拦截日志,反向推导已允许的调用:
bash
运行
# 查看目标程序的 AppArmor 日志
sudo grep -i "apparmor.*syscall" /var/log/syslog | grep "myapp"
若日志中无 syscall 相关的 DENIED 记录,说明程序当前执行的系统调用均已被允许;
若有 DENIED 记录,说明该调用未被配置文件允许。
三、关键注意事项
区分 “配置规则” 和 “生效规则”
直接查看配置文件得到的是 “声明的规则”;
只有执行 apparmor_parser -r 加载后,规则才会生效,可通过 aa-status 验证加载状态。
处理注释和格式问题配置文件中的注释行(以 # 开头)不会生效,过滤时可排除注释:
bash
运行
sudo grep -n "syscall" /etc/apparmor.d/usr.local.bin.myapp | grep -v "^#"
系统调用类别需展开查看若配置文件中写的是 syscall @file,,不能直接知道具体包含哪些调用,必须查看 /etc/apparmor.d/abi/3.0 中的类别定义。

三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快

上一篇:如何在AppArmor配置文件中允许程序访问特定的网络端口? 下一篇:如何在AppArmor配置文件中允许程序执行特定的系统调用?

美国GIA服务器三二互联版权所有 WWW.250.cc 2008-2015 All Rights Reserved
三二互联 - 专业的美国C3服务器、香港vps、抗DOOS流量清洗、云备份系统、网站加速系统、美国GIA服务器和香港云服务器产品提供商
三二互联24小时在线工单系统为您提供全面、专业、周到的技术支持与服务
咨询热线:400-679-9994(免长话费)