AppArmor策略是使用一种友好的配置文件语言创建的,然后将其编译为二进制策略以加载到内核中。
AppArmor策略存储在/etc/ AppArmor .d/目录下的一组文件中。
AppArmor策略被分成几个配置文件,这些配置文件通常被设计用来限制特定的应用程序。
配置文件将声明访问规则以允许对资源的访问,当配置文件中没有匹配的规则时,使用日志记录会隐式拒绝访问。
配置布局
AppArmor的配置设置存储在两个位置:
全局设置和系统设置保存在/etc/apparmor/中;
用户设置存储在${HOME}/.apparmor/中;
系统策略存储在/etc/apparmor. d/目录中,当实现用户策略时将存储在${HOME}/.apparmor.d/中(${APPARMOR.D}用于引用这两个目录)。
${APPARMOR.D}目录包含一组目录和配置文件。目录中的所有文件都被视为配置文件,除非它们符合以下任何一种模式,在这种情况下,这些文件将被忽略。
- *~
- *.bak
- *.rpm*
- *.dpkg-{bak,dist,new,old}
在${APPARMOR.D}下列目录有特殊意义:
${APPARMOR.D}/abstractions/
${APPARMOR.D}/apache2.d/
${APPARMOR.D}/cache/
- precompiled binary policy files${APPARMOR.D}/disable/
- symlinks to profiles to disable${APPARMOR.D}/force-complain/
- symlinks to profiles to set to complain mode${APPARMOR.D}/libvirt/
${APPARMOR.D}/local/
${APPARMOR.D}/namespaces/
${APPARMOR.D}/pam/
${APPARMOR.D}/tunables/
根据您的操作系统供应商和版本,您的系统可能有上述部分或全部目录。
配置文件
配置文件以配置文件的名称开头,后跟一个可选的flags字段,然后是:
一个开头 {
后跟配置文件的规则,最后以结束
}
如果配置文件名称不以/开头,则应在前面加上关键字profile。例如:
/usr/bin/firefox { # profile contents } /usr/bin/firefox flags=(complain) { # profile contents } profile /usr/bin/ { # profile contents } profile user1 { # profile contents }
配置文件名称可以包含文件规则通配字符,以允许它们应用于多个可执行文件,请参阅文件通配(下面)了解详细信息。
注释
注释是行导向的,以#开始。在行尾跟随“#”的文本将被忽略(#include规则除外)。例如:
# Comment 1 # Comment 2 profile example { # comment 3 # comment 4 /home/foo rw, # comment at the end of a file rule }
Include Rules
策略文件可以包含其他文件来共享文本段。
AppArmor include遵循C include约定:
它们以#include开头,对于相对于集合包含目录的文本夹 ,后面跟着 < > ;相对于当前文件的文件,后面跟着 " "。
#是可选的,不应该在较新的配置文件中使用。例如:
#include &l