在AppArmor零知识学习十二、源码构建(9)中,详细介绍了PAM AppArmor的构建步骤,但那完全使用的是官网给出的默认参数。如果需要将目标文件生成到指定目录而非默认的/usr,则需要进行一些修改,本文就来详述如何进行修改。
必须说明以下两点:
(1)PAM AppArmor的构建必须在前述步骤(配置环境变量和libapparmor构建)的基础上才能进行。关于这两个步骤,请参阅:AppArmor零知识学习四、源码构建(1)和AppArmor零知识学习五、源码构建(2);
(2)前文libapparmor非默认目录构建和安装中的步骤是为了制作包时使用,由于其没有将目标文件放到/usr/local下,因此实际上并没有起作用。真正起作用的是之前按照默认参数构建的libapparmor相关组件。
接下来,开始PAM AppArmor自定义安装目录的构建和安装。
(1)进入changehat/pam_apparmor目录
通过cd命令进入apparmor源码根目录下的changehat/pam_apparmor
目录。实际命令及结果如下:
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor$ cd changehat/pam_apparmor/
penghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor/changehat/pam_apparmor$ pwd
/home/penghao/AppArmor/apparmor_2/apparmor/changehat/pam_apparmorpenghao@Ding-Perlis-MP260S48:~/AppArmor/apparmor_2/apparmor/changehat/pam_apparmor$ ls
COPYING get_options.c Makefile pam_apparmor.c pam_apparmor.changes pam_apparmor.h README
(2)编译
运行make命令进行编译。实际命令及结果如下:
$ make
cc -fPIC -shared -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -I../../libraries/libapparmor//include -c -o pam_apparmor.o pam_apparmor.c
cc -fPIC -shared -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -I../../libraries/libapparmor//include -c -o get_options.o get_options.c
cc -fPIC -shared -Wall -Wall -Wsign-compare -Wmissing-field-initializers -Wformat -Wformat-security -Wunused-parameter -Wimplicit-fallthrough -I../../libraries/libapparmor//include -Xlinker -x -L../../libraries/libapparmor//src/.libs/ -o pam_apparmor.so pam_apparmor.o get_options.o -lpam -lapparmor
(3)安装
运行make install命令进行安装。实际命令及结果如下(注意DESTDIR=的参数):
$ make install DESTDIR=/home/penghao/AppArmor/apparmor_2/output2
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output2/lib/security
install -m 755 pam_apparmor.so /home/penghao/AppArmor/apparmor_2/output2/lib/security/
(4)查看生成内容
查看一下通过make DESTDIR=/home/penghao/AppArmor/apparmor_2/output2配置后实际的生成文件及路径:
$ tree ../../../output2
../../../output2
└── lib└── security└── pam_apparmor.so2 directories, 1 file
这里将生成目标放到了output2文件夹下,是为了看清楚PAM AppArmor都生成了哪些内容。最终还是要安装到之前的output目录下。
更换DESTDIR=参数后再次进行安装,实际命令及结果如下:
$ make install DESTDIR=/home/penghao/AppArmor/apparmor_2/output
install -m 755 -d /home/penghao/AppArmor/apparmor_2/output/lib/security
install -m 755 pam_apparmor.so /home/penghao/AppArmor/apparmor_2/output/lib/security/
对比一下output在安装PAM AppArmor前后的变化:
安装前
$ tree ../../../output
../../../output
├── etc
│ └── apparmor
│ ├── easyprof.conf
│ ├── logprof.conf
│ ├── notify.conf
│ ├── parser.conf
│ └── severity.db
├── lib
│ └── apparmor
│ ├── profile-load
│ └── rc.apparmor.functions
├── sbin
│ └── apparmor_parser
├── usr
│ ├── bin
│ │ ├── aa-easyprof
│ │ ├── aa-enabled
│ │ ├── aa-exec
│ │ └── aa-features-abi
│ ├── lib
│ │ └── python3.10
│ │ └── site-packages
│ │ ├── apparmor
│ │ │ ├── aa.py
│ │ │ ├── aare.py
│ │ │ ├── cleanprofile.py
│ │ │ ├── common.py
│ │ │ ├── config.py
│ │ │ ├── easyprof.py
│ │ │ ├── fail.py
│ │ │ ├── __init__.py
│ │ │ ├── logparser.py
│ │ │ ├── notify.py
│ │ │ ├── profile_list.py
│ │ │ ├── profile_storage.py
│ │ │ ├── __pycache__
│ │ │ │ ├── aa.cpython-310.pyc
│ │ │ │ ├── aare.cpython-310.pyc
│ │ │ │ ├── cleanprofile.cpython-310.pyc
│ │ │ │ ├── common.cpython-310.pyc
│ │ │ │ ├── config.cpython-310.pyc
│ │ │ │ ├── easyprof.cpython-310.pyc
│ │ │ │ ├── fail.cpython-310.pyc
│ │ │ │ ├── __init__.cpython-310.pyc
│ │ │ │ ├── logparser.cpython-310.pyc
│ │ │ │ ├── notify.cpython-310.pyc
│ │ │ │ ├── profile_list.cpython-310.pyc
│ │ │ │ ├── profile_storage.cpython-310.pyc
│ │ │ │ ├── regex.cpython-310.pyc
│ │ │ │ ├── rules.cpython-310.pyc
│ │ │ │ ├── sandbox.cpython-310.pyc
│ │ │ │ ├── severity.cpython-310.pyc
│ │ │ │ ├── tools.cpython-310.pyc
│ │ │ │ ├── translations.cpython-310.pyc
│ │ │ │ └── ui.cpython-310.pyc
│ │ │ ├── regex.py
│ │ │ ├── rule
│ │ │ │ ├── abi.py
│ │ │ │ ├── alias.py
│ │ │ │ ├── boolean.py
│ │ │ │ ├── capability.py
│ │ │ │ ├── change_profile.py
│ │ │ │ ├── dbus.py
│ │ │ │ ├── file.py
│ │ │ │ ├── include.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── mqueue.py
│ │ │ │ ├── network.py
│ │ │ │ ├── ptrace.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── abi.cpython-310.pyc
│ │ │ │ │ ├── alias.cpython-310.pyc
│ │ │ │ │ ├── boolean.cpython-310.pyc
│ │ │ │ │ ├── capability.cpython-310.pyc
│ │ │ │ │ ├── change_profile.cpython-310.pyc
│ │ │ │ │ ├── dbus.cpython-310.pyc
│ │ │ │ │ ├── file.cpython-310.pyc
│ │ │ │ │ ├── include.cpython-310.pyc
│ │ │ │ │ ├── __init__.cpython-310.pyc
│ │ │ │ │ ├── mqueue.cpython-310.pyc
│ │ │ │ │ ├── network.cpython-310.pyc
│ │ │ │ │ ├── ptrace.cpython-310.pyc
│ │ │ │ │ ├── rlimit.cpython-310.pyc
│ │ │ │ │ ├── signal.cpython-310.pyc
│ │ │ │ │ ├── userns.cpython-310.pyc
│ │ │ │ │ └── variable.cpython-310.pyc
│ │ │ │ ├── rlimit.py
│ │ │ │ ├── signal.py
│ │ │ │ ├── userns.py
│ │ │ │ └── variable.py
│ │ │ ├── rules.py
│ │ │ ├── sandbox.py
│ │ │ ├── severity.py
│ │ │ ├── tools.py
│ │ │ ├── translations.py
│ │ │ └── ui.py
│ │ └── apparmor-3.1.0-py3.10.egg-info
│ │ ├── dependency_links.txt
│ │ ├── PKG-INFO
│ │ ├── SOURCES.txt
│ │ └── top_level.txt
│ ├── local
│ │ ├── include
│ │ │ ├── aalogparse
│ │ │ │ └── aalogparse.h
│ │ │ └── sys
│ │ │ ├── apparmor.h
│ │ │ └── apparmor_private.h
│ │ ├── lib
│ │ │ ├── libapparmor.a
│ │ │ ├── libapparmor.la
│ │ │ ├── libapparmor.so -> libapparmor.so.1.12.2
│ │ │ ├── libapparmor.so.1 -> libapparmor.so.1.12.2
│ │ │ ├── libapparmor.so.1.12.2
│ │ │ ├── perl5
│ │ │ │ └── 5.36
│ │ │ │ ├── core_perl
│ │ │ │ │ └── perllocal.pod
│ │ │ │ └── vendor_perl
│ │ │ │ ├── auto
│ │ │ │ │ └── LibAppArmor
│ │ │ │ │ └── LibAppArmor.so
│ │ │ │ └── LibAppArmor.pm
│ │ │ ├── pkgconfig
│ │ │ │ └── libapparmor.pc
│ │ │ └── python3.10
│ │ │ └── site-packages
│ │ │ ├── LibAppArmor
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _LibAppArmor.cpython-310-x86_64-linux-gnu.so
│ │ │ │ ├── LibAppArmor.py
│ │ │ │ └── __pycache__
│ │ │ │ ├── __init__.cpython-310.pyc
│ │ │ │ └── LibAppArmor.cpython-310.pyc
│ │ │ └── LibAppArmor-3.1.0-py3.10.egg-info
│ │ │ ├── dependency_links.txt
│ │ │ ├── PKG-INFO
│ │ │ ├── SOURCES.txt
│ │ │ └── top_level.txt
│ │ └── share
│ │ └── man
│ │ ├── man2
│ │ │ ├── aa_change_hat.2
│ │ │ ├── aa_change_profile.2
│ │ │ ├── aa_find_mountpoint.2
│ │ │ ├── aa_getcon.2
│ │ │ ├── aa_query_label.2
│ │ │ └── aa_stack_profile.2
│ │ └── man3
│ │ ├── aa_features.3
│ │ ├── aa_kernel_interface.3
│ │ ├── aa_policy_cache.3
│ │ └── aa_splitcon.3
│ ├── sbin
│ │ ├── aa-audit
│ │ ├── aa-autodep
│ │ ├── aa-cleanprof
│ │ ├── aa-complain
│ │ ├── aa-decode
│ │ ├── aa-disable
│ │ ├── aa-enforce
│ │ ├── aa-genprof
│ │ ├── aa-logprof
│ │ ├── aa-mergeprof
│ │ ├── aa-notify
│ │ ├── aa-remove-unknown
│ │ ├── aa-status
│ │ ├── aa-unconfined
│ │ └── apparmor_status -> aa-status
│ └── share
│ ├── apparmor
│ │ ├── apparmor.vim
│ │ └── easyprof
│ │ ├── policygroups
│ │ │ ├── opt-application
│ │ │ └── user-application
│ │ └── templates
│ │ ├── default
│ │ ├── sandbox
│ │ ├── sandbox-x
│ │ └── user-application
│ ├── locale
│ │ ├── af
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ar
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── be
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-utils.mo
│ │ ├── bg
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bn
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bo
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── bs
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ca
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ce
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── cs
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── cy
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── da
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── de
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── el
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_AU
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_CA
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_GB
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── es
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── et
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── fa
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── fi
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── fr
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── gl
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── gu
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── he
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hi
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── hr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hu
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── id
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── it
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ja
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ka
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── km
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ko
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── lo
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── lt
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── mk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── mr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ms
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── nb
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── nl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── oc
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── pa
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── pl
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── pt
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── pt_BR
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ro
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ru
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── si
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sq
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sv
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── sw
│ │ │ └── LC_MESSAGES
│ │ │ └── aa-binutils.mo
│ │ ├── ta
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── th
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── tr
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ug
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── uk
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── vi
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── wa
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── xh
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── zh_CN
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── zh_TW
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ └── zu
│ │ └── LC_MESSAGES
│ │ └── apparmor-parser.mo
│ └── man
│ ├── man1
│ │ ├── aa-enabled.1
│ │ ├── aa-exec.1
│ │ └── aa-features-abi.1
│ ├── man5
│ │ ├── apparmor.d.5
│ │ ├── apparmor.vim.5
│ │ └── logprof.conf.5
│ ├── man7
│ │ ├── apparmor.7
│ │ └── apparmor_xattrs.7
│ └── man8
│ ├── aa-audit.8
│ ├── aa-autodep.8
│ ├── aa-cleanprof.8
│ ├── aa-complain.8
│ ├── aa-decode.8
│ ├── aa-disable.8
│ ├── aa-easyprof.8
│ ├── aa-enforce.8
│ ├── aa-genprof.8
│ ├── aa-logprof.8
│ ├── aa-mergeprof.8
│ ├── aa-notify.8
│ ├── aa-remove-unknown.8
│ ├── aa-status.8
│ ├── aa-teardown.8
│ ├── aa-unconfined.8
│ ├── apparmor_parser.8
│ └── apparmor_status.8 -> aa-status.8
└── var└── lib└── apparmor183 directories, 268 files
安装后
$ tree ../../../output
../../../output
├── etc
│ └── apparmor
│ ├── easyprof.conf
│ ├── logprof.conf
│ ├── notify.conf
│ ├── parser.conf
│ └── severity.db
├── lib
│ ├── apparmor
│ │ ├── profile-load
│ │ └── rc.apparmor.functions
│ └── security
│ └── pam_apparmor.so
├── sbin
│ └── apparmor_parser
├── usr
│ ├── bin
│ │ ├── aa-easyprof
│ │ ├── aa-enabled
│ │ ├── aa-exec
│ │ └── aa-features-abi
│ ├── lib
│ │ └── python3.10
│ │ └── site-packages
│ │ ├── apparmor
│ │ │ ├── aa.py
│ │ │ ├── aare.py
│ │ │ ├── cleanprofile.py
│ │ │ ├── common.py
│ │ │ ├── config.py
│ │ │ ├── easyprof.py
│ │ │ ├── fail.py
│ │ │ ├── __init__.py
│ │ │ ├── logparser.py
│ │ │ ├── notify.py
│ │ │ ├── profile_list.py
│ │ │ ├── profile_storage.py
│ │ │ ├── __pycache__
│ │ │ │ ├── aa.cpython-310.pyc
│ │ │ │ ├── aare.cpython-310.pyc
│ │ │ │ ├── cleanprofile.cpython-310.pyc
│ │ │ │ ├── common.cpython-310.pyc
│ │ │ │ ├── config.cpython-310.pyc
│ │ │ │ ├── easyprof.cpython-310.pyc
│ │ │ │ ├── fail.cpython-310.pyc
│ │ │ │ ├── __init__.cpython-310.pyc
│ │ │ │ ├── logparser.cpython-310.pyc
│ │ │ │ ├── notify.cpython-310.pyc
│ │ │ │ ├── profile_list.cpython-310.pyc
│ │ │ │ ├── profile_storage.cpython-310.pyc
│ │ │ │ ├── regex.cpython-310.pyc
│ │ │ │ ├── rules.cpython-310.pyc
│ │ │ │ ├── sandbox.cpython-310.pyc
│ │ │ │ ├── severity.cpython-310.pyc
│ │ │ │ ├── tools.cpython-310.pyc
│ │ │ │ ├── translations.cpython-310.pyc
│ │ │ │ └── ui.cpython-310.pyc
│ │ │ ├── regex.py
│ │ │ ├── rule
│ │ │ │ ├── abi.py
│ │ │ │ ├── alias.py
│ │ │ │ ├── boolean.py
│ │ │ │ ├── capability.py
│ │ │ │ ├── change_profile.py
│ │ │ │ ├── dbus.py
│ │ │ │ ├── file.py
│ │ │ │ ├── include.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── mqueue.py
│ │ │ │ ├── network.py
│ │ │ │ ├── ptrace.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── abi.cpython-310.pyc
│ │ │ │ │ ├── alias.cpython-310.pyc
│ │ │ │ │ ├── boolean.cpython-310.pyc
│ │ │ │ │ ├── capability.cpython-310.pyc
│ │ │ │ │ ├── change_profile.cpython-310.pyc
│ │ │ │ │ ├── dbus.cpython-310.pyc
│ │ │ │ │ ├── file.cpython-310.pyc
│ │ │ │ │ ├── include.cpython-310.pyc
│ │ │ │ │ ├── __init__.cpython-310.pyc
│ │ │ │ │ ├── mqueue.cpython-310.pyc
│ │ │ │ │ ├── network.cpython-310.pyc
│ │ │ │ │ ├── ptrace.cpython-310.pyc
│ │ │ │ │ ├── rlimit.cpython-310.pyc
│ │ │ │ │ ├── signal.cpython-310.pyc
│ │ │ │ │ ├── userns.cpython-310.pyc
│ │ │ │ │ └── variable.cpython-310.pyc
│ │ │ │ ├── rlimit.py
│ │ │ │ ├── signal.py
│ │ │ │ ├── userns.py
│ │ │ │ └── variable.py
│ │ │ ├── rules.py
│ │ │ ├── sandbox.py
│ │ │ ├── severity.py
│ │ │ ├── tools.py
│ │ │ ├── translations.py
│ │ │ └── ui.py
│ │ └── apparmor-3.1.0-py3.10.egg-info
│ │ ├── dependency_links.txt
│ │ ├── PKG-INFO
│ │ ├── SOURCES.txt
│ │ └── top_level.txt
│ ├── local
│ │ ├── include
│ │ │ ├── aalogparse
│ │ │ │ └── aalogparse.h
│ │ │ └── sys
│ │ │ ├── apparmor.h
│ │ │ └── apparmor_private.h
│ │ ├── lib
│ │ │ ├── libapparmor.a
│ │ │ ├── libapparmor.la
│ │ │ ├── libapparmor.so -> libapparmor.so.1.12.2
│ │ │ ├── libapparmor.so.1 -> libapparmor.so.1.12.2
│ │ │ ├── libapparmor.so.1.12.2
│ │ │ ├── perl5
│ │ │ │ └── 5.36
│ │ │ │ ├── core_perl
│ │ │ │ │ └── perllocal.pod
│ │ │ │ └── vendor_perl
│ │ │ │ ├── auto
│ │ │ │ │ └── LibAppArmor
│ │ │ │ │ └── LibAppArmor.so
│ │ │ │ └── LibAppArmor.pm
│ │ │ ├── pkgconfig
│ │ │ │ └── libapparmor.pc
│ │ │ └── python3.10
│ │ │ └── site-packages
│ │ │ ├── LibAppArmor
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _LibAppArmor.cpython-310-x86_64-linux-gnu.so
│ │ │ │ ├── LibAppArmor.py
│ │ │ │ └── __pycache__
│ │ │ │ ├── __init__.cpython-310.pyc
│ │ │ │ └── LibAppArmor.cpython-310.pyc
│ │ │ └── LibAppArmor-3.1.0-py3.10.egg-info
│ │ │ ├── dependency_links.txt
│ │ │ ├── PKG-INFO
│ │ │ ├── SOURCES.txt
│ │ │ └── top_level.txt
│ │ └── share
│ │ └── man
│ │ ├── man2
│ │ │ ├── aa_change_hat.2
│ │ │ ├── aa_change_profile.2
│ │ │ ├── aa_find_mountpoint.2
│ │ │ ├── aa_getcon.2
│ │ │ ├── aa_query_label.2
│ │ │ └── aa_stack_profile.2
│ │ └── man3
│ │ ├── aa_features.3
│ │ ├── aa_kernel_interface.3
│ │ ├── aa_policy_cache.3
│ │ └── aa_splitcon.3
│ ├── sbin
│ │ ├── aa-audit
│ │ ├── aa-autodep
│ │ ├── aa-cleanprof
│ │ ├── aa-complain
│ │ ├── aa-decode
│ │ ├── aa-disable
│ │ ├── aa-enforce
│ │ ├── aa-genprof
│ │ ├── aa-logprof
│ │ ├── aa-mergeprof
│ │ ├── aa-notify
│ │ ├── aa-remove-unknown
│ │ ├── aa-status
│ │ ├── aa-unconfined
│ │ └── apparmor_status -> aa-status
│ └── share
│ ├── apparmor
│ │ ├── apparmor.vim
│ │ └── easyprof
│ │ ├── policygroups
│ │ │ ├── opt-application
│ │ │ └── user-application
│ │ └── templates
│ │ ├── default
│ │ ├── sandbox
│ │ ├── sandbox-x
│ │ └── user-application
│ ├── locale
│ │ ├── af
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ar
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── be
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-utils.mo
│ │ ├── bg
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bn
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── bo
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── bs
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ca
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ce
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── cs
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── cy
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── da
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── de
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── el
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_AU
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_CA
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── en_GB
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── es
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── et
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── fa
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── fi
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ └── apparmor-parser.mo
│ │ ├── fr
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── gl
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── gu
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── he
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hi
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── hr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── hu
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── id
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── it
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ja
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ka
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── km
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ko
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── lo
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── lt
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── mk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── mr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── ms
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── nb
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── nl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── oc
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── pa
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── pl
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── pt
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── pt_BR
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ro
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ru
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── si
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sk
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sl
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sq
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sr
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── sv
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── sw
│ │ │ └── LC_MESSAGES
│ │ │ └── aa-binutils.mo
│ │ ├── ta
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── th
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── tr
│ │ │ └── LC_MESSAGES
│ │ │ ├── aa-binutils.mo
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── ug
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── uk
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── vi
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── wa
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── xh
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ ├── zh_CN
│ │ │ └── LC_MESSAGES
│ │ │ ├── apparmor-parser.mo
│ │ │ └── apparmor-utils.mo
│ │ ├── zh_TW
│ │ │ └── LC_MESSAGES
│ │ │ └── apparmor-parser.mo
│ │ └── zu
│ │ └── LC_MESSAGES
│ │ └── apparmor-parser.mo
│ └── man
│ ├── man1
│ │ ├── aa-enabled.1
│ │ ├── aa-exec.1
│ │ └── aa-features-abi.1
│ ├── man5
│ │ ├── apparmor.d.5
│ │ ├── apparmor.vim.5
│ │ └── logprof.conf.5
│ ├── man7
│ │ ├── apparmor.7
│ │ └── apparmor_xattrs.7
│ └── man8
│ ├── aa-audit.8
│ ├── aa-autodep.8
│ ├── aa-cleanprof.8
│ ├── aa-complain.8
│ ├── aa-decode.8
│ ├── aa-disable.8
│ ├── aa-easyprof.8
│ ├── aa-enforce.8
│ ├── aa-genprof.8
│ ├── aa-logprof.8
│ ├── aa-mergeprof.8
│ ├── aa-notify.8
│ ├── aa-remove-unknown.8
│ ├── aa-status.8
│ ├── aa-teardown.8
│ ├── aa-unconfined.8
│ ├── apparmor_parser.8
│ └── apparmor_status.8 -> aa-status.8
└── var└── lib└── apparmor184 directories, 269 files