![AppArmor 如何将配置文件与进程进行匹配?](https://linux22.com/image/142277/AppArmor%20%E5%A6%82%E4%BD%95%E5%B0%86%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%8E%E8%BF%9B%E7%A8%8B%E8%BF%9B%E8%A1%8C%E5%8C%B9%E9%85%8D%EF%BC%9F.png)
AppArmor 配置文件可以通过哪些方式与进程进行匹配?一个似乎是基于路径的(例如,执行/sbin/dhclient
时应用配置文件/sbin/dhclient
),但这是由于/sbin/dhclient
出现在sbin.dhclient
配置文件中还是因为命名方式sbin.dhclient
?
另外,对于基于非路径的配置文件匹配(例如,对于docker-default
配置文件),AppArmor 如何告知将配置文件应用到哪些进程?
答案1
AppArmor 配置文件使用命令的损坏路径作为文件名只是一种约定。从man 7 apparmor
:
传统上,配置文件存储在
/etc/apparmor.d/
文件名下的文件中,惯例是将/
路径名中的 in 替换为.
(根除外/
),以便配置文件更易于管理(例如,/usr/sbin/nscd
配置文件将被命名为usr.sbin.nscd
)。
如果配置文件名称包含文件 glob,则应用到与该 glob 匹配的文件。从AppArmor 核心策略参考:
AppArmor 使用附件规范来确定配置文件将附加到哪些可执行文件。如果未提供备用配置文件名称,则附件规范也用作配置文件名称;如果未指定附件规范,则必须提供配置文件名称。
配置文件的名称在 AppArmor 中非常重要。它不仅提供用户可以与配置文件规则集关联的名称,而且还用于标记、ipc,并且在名称是附件规范的情况下,它确定配置文件附加到哪些可执行文件。