关于AppArmor解析器提示“missing feature abi”警告的含义、影响及解决方法咨询
嗨,我来帮你把这个问题掰明白~
这个警告到底是什么意思?
AppArmor是Linux系统里的安全防护工具,它靠配置文件来定义程序的权限规则。你看到的这个警告,意思是/etc/apparmor.d/sbin.dhclient这个配置文件里,没有声明ABI(应用二进制接口)版本。
新的AppArmor版本会引入一些新的规则特性,而ABI版本就是用来告诉解析器“我这个配置文件是基于哪个版本的规则写的”。现在你的配置文件没加这个声明,解析器就只能降级到默认的ABI版本来处理这个规则文件。
这会是个严重问题吗?
别太担心,一般情况下这不是致命问题。你的dhclient程序还是能正常受AppArmor保护,规则也能正常生效,只是没法用到新版本AppArmor的一些高级特性而已。如果你的系统网络功能正常,没有出现权限拒绝之类的报错,完全可以先把它当成一个“提醒”而非“故障”。
怎么解决这个警告?
给你几个实用的解决办法,按需选择:
手动添加ABI声明(最直接)
打开终端,编辑那个配置文件:sudo nano /etc/apparmor.d/sbin.dhclient在文件的最开头(比如第1行)或者第4行之前,加上一行ABI声明,当前常见的版本是3.0或4.0,你可以先试试:
abi 3.0;保存退出后,重新加载这个配置文件:
sudo apparmor_parser -r /etc/apparmor.d/sbin.dhclient之后再重启AppArmor服务或者重新触发配置解析,警告就会消失啦。如果不确定用哪个ABI版本,可以跑
apparmor_parser --help查看当前支持的版本列表。等待软件包更新(最省心)
这个警告大概率是因为dhclient对应的AppArmor配置包没跟上AppArmor本身的版本更新。你可以定期运行sudo apt update && sudo apt upgrade,等软件源里的apparmor-profiles或者dhclient相关的配置包更新后,官方会自动修复这个配置文件,不用你手动折腾。禁用该配置文件(不推荐)
如果你确定dhclient不需要AppArmor的防护(不建议这么做,毕竟安全防护多一层是一层),可以禁用这个配置:sudo ln -s /etc/apparmor.d/sbin.dhclient /etc/apparmor.d/disable/ sudo systemctl reload apparmor这样警告会消失,但代价是dhclient失去了AppArmor的权限限制,谨慎操作哦。
备注:内容来源于stack exchange,提问作者Marco Sulla

