如何解析AppArmor配置文件并查看指定进程的AppArmor限制
嘿,我来帮你搞定这个查看AppArmor进程限制的问题!你之前用apparmor_parser去读/sys目录下的raw_data文件报错,是因为那个文件是二进制格式的,而apparmor_parser只能解析文本格式的AppArmor配置文件,自然会出现语法错误啦。
下面给你几种靠谱的方法,能轻松查看dhclient的AppArmor限制:
方法1:直接查看本地配置文件(最直观)
系统里的AppArmor规则文件一般都放在/etc/apparmor.d/目录下,对应dhclient的文件是usr.sbin.dhclient。直接用cat命令就能查看:
cat /etc/apparmor.d/usr.sbin.dhclient
这里面就是定义dhclient权限限制的完整文本规则,比如允许访问哪些文件、能不能联网、执行哪些命令等。
方法2:查看内核中已加载的生效规则
有时候本地配置文件可能和内核中实际加载的规则有差异(比如临时调整过),这时候可以用aa-show命令查看当前生效的规则:
aa-show usr.sbin.dhclient
这个命令会把dhclient的所有权限限制清晰列出来,比如允许的文件路径、网络操作、capabilities等,是最准确的查看方式。
方法3:确认profile是否已加载
如果不确定dhclient的AppArmor profile有没有被加载,可以先运行下面的命令查看所有已加载的profile:
aa-status # 或者用旧版本的命令 apparmor_status
在输出里找usr.sbin.dhclient这一项,就能确认它的状态(比如是否处于enforce模式)。
关于/sys目录的补充说明
/sys/kernel/security/apparmor/policy/profiles/下的raw_data是内核存储的二进制格式profile数据,如果你非要从这里提取规则,可以用apparmor_parser的-S参数来转成文本:
apparmor_parser -S /sys/kernel/security/apparmor/policy/profiles/usr.sbin.dhclient.6/raw_data
不过这个方法不如前面两种方便,一般不推荐。
总结一下,优先用aa-show usr.sbin.dhclient或者直接查看/etc/apparmor.d/usr.sbin.dhclient,这两个方法简单又准确~
备注:内容来源于stack exchange,提问作者vtable




