我知道 AppArmor 配置文件位于 中/etc/apparmor.d/
,但我不知道如何解释它。任何翻译都会有所帮助。
答案1
其中唯一令人困惑的是代码以及你对它们的解释:
'r' 读 'w' 写 ‘m’ 内存映射为可执行文件 ‘k’ 文件锁定 'l' 创建硬链接 ‘ix’ 执行并继承此配置文件 清理环境后,‘Px’在另一个配置文件下执行 'Ux' 清理环境后,不受限制地执行
文件的其余部分主要是目录、文件和库,有时前面会有一些参数(比如 PROC 和 HOME 看起来很容易理解)和正则表达式以使其更加灵活,有时在行前面会有一个“拒绝”或“所有者”(这些对我来说似乎是不言自明的:它们拒绝访问并限制操作,以防所有者执行这些操作)。
关于PROC:
例子:
# 用于网络 网络 inet 流, 网络inet6流, @{PROC}/[0-9]*/net/if_inet6 r, @{PROC}/[0-9]*/net/ipv6_route,
并做
/proc/ 目录 ls *
看到所有带数字的目录了吗?这些目录对应于每个正在运行的进程。如果其中任何一个包含目录net
(network
)并且其中包含文件if_net6
或ipv6_route
它们被视为read
。
答案2
请参阅手册页中的Access Modes
、Rule Qualifiers
和 ......#include mechanism
man apparmor.d
手册页对此进行了非常详细的解释。关于您关于@{PROC}
在包含文件中可以设置的变量的问题。从 apparmor.d(5) 手册页...
一些抽象依赖于
/etc/apparmor.d/tunables/
目录中文件中设置的变量。这些变量目前为@{HOME}
和@{HOMEDIRS}
。变量不能在配置文件范围内设置;只能在配置文件之前设置。因此,任何使用抽象的配置文件都应#include <tunables/global>
确保在开始配置文件定义之前设置@{HOME}
和。和实用程序将在生成的配置文件中自动发出。@{HOMEDIRS}
aa-autodep(8)
aa-genprof(8)
#include <tunables/global>
如果你看一下,/etc/apparmor.d/tunables/global
你会看到还有另一个#include <tunables/proc>
。该文件的内容是......
# Copyright (C) 2006 Novell/SUSE... GNU GPLv2... more license info...
# @{PROC} is the location where procfs is mounted.
@{PROC}=/proc/
所以@{PROC}
只是一个指向proc(5) 文件系统。