AppArmor 重新安装失败

AppArmor 重新安装失败

我使用 apparmor 和 libapache2-mod-apparmor 来对一些网站进行沙盒处理。然而,在最近重新安装后,它停止工作了。我一直收到此错误:

Setting up apparmor (2.7.0~beta1+bzr1774-1ubuntu2) ...
 * Starting AppArmor profiles
Warning from stdin (line 1): /sbin/apparmor_parser: cannot use or update cache, disable, or force-complain via stdin

[ OK ]
 * Reloading AppArmor profiles
Warning from stdin (line 1): /sbin/apparmor_parser: cannot use or update cache, disable, or force-complain via stdin
invoke-rc.d: initscript apparmor, action "reload" failed.

我尝试彻底删除并清除 apparmor、apache2、libapache2-mod-apparmor 等,然后重新安装,但一直出现此错误。据我所知,系统上没有其他东西可以阻止它。有什么想法吗?

答案1

当内核报告的功能与缓存中的功能不同步时,AppArmor 无法生成或更新缓存文件。当安装了具有新功能的内核和/或用户空间尚未更新以匹配和/或用户空间编译器中存在错误时,可能会发生这种情况。

导致这种情况的一种方法是安装开发版本或上游版本的内核,但不使用匹配的软件包更新 apparmor 用户空间。这不会阻止 apparmor 加载策略,但它会生成警告并降低其速度,因为它在每次加载时都会进行新的编译。

删除并重新安装一组软件包(例如apparmor、、、apache2... libapache2)可能会或可能不会正确删除和清除旧的不一致缓存文件。部分删除缓存文件通常会导致不会生成新的缓存条目,因为缓存仅存储一个功能集的条目。

缓存文件存储在 中/etc/apparmor.d/cache/

您可以通过查看以下内容来比较缓存和内核功能集:

/etc/apparmor.d/cache/.features

并取决于你的内核:

/sys/kernel/security/apparmor/features/

(条目目录)

或者:

/sys/kernel/security/apparmor/features

(一份文件)

和:

/sys/kernel/security/apparmor/matching

您可以检查已加载的策略状态,以确定策略是否正在加载以及您使用以下命令遇到的缓存更新失败:

sudo aa-status

您可以尝试使用以下方法强制重新生成缓存:

sudo /etc/init.d/apparmor restart

如果失败,您可以尝试手动删除缓存文件,然后重新生成缓存:

sudo rm -rf /etc/apparmor.d/cache/*
sudo /etc/init.d/apparmor restart

如果这不起作用,则说明您遇到了错误,我建议您使用启动板提交错误:

ubuntu-bug apparmor

相关内容