Ubuntu 22.04树莓派环境下AppArmor阻止isc-dhcp-server访问特定系统文件的原因及解决方法咨询
Ubuntu 22.04树莓派环境下AppArmor阻止isc-dhcp-server访问特定系统文件的原因及解决方法咨询
嗨,我来帮你拆解这个问题的来龙去脉,以及对应的解决办法~
为什么会出现这个AppArmor拒绝日志?
- DHCP服务的内部逻辑需求:哪怕你的树莓派用了固定IPv4地址,ISC DHCP服务器(dhcpd)在启动和运行过程中,依然会尝试读取
/proc/sys/net/ipv4/ip_local_port_range这个系统参数——它需要获取系统允许的临时端口范围,用来分配和客户端通信的辅助端口,这是它的固有逻辑,和是否用固定IP无关。 - AppArmor的权限限制:Ubuntu 22.04自带的AppArmor安全模块,针对
/usr/sbin/dhcpd的默认配置文件里,没有开放对这个proc路径的读取权限,所以当dhcpd尝试访问时,就触发了“DENIED”的日志。
怎么阻止这个失败操作?
这里有两种方案,你可以根据自己的需求选择:
方案一:临时允许(重启后失效,适合测试)
执行下面的命令,让AppArmor对dhcpd进入“投诉模式”——只记录访问日志,但不会实际阻止操作:
aa-complain /usr/sbin/dhcpd
之后重启DHCP服务生效:
systemctl restart isc-dhcp-server
方案二:永久允许(修改AppArmor配置)
如果希望彻底解决这个问题,需要修改AppArmor的dhcpd配置文件:
- 打开dhcpd的AppArmor配置文件:
nano /etc/apparmor.d/usr.sbin.dhcpd - 在文件中找到已经包含
/proc/相关权限的段落(比如和网络参数相关的区域),添加一行权限规则:/proc/sys/net/ipv4/ip_local_port_range r, - 保存并退出编辑器后,重新加载AppArmor配置:
systemctl reload apparmor - 最后重启DHCP服务:
systemctl restart isc-dhcp-server
这样之后,dhcpd就能正常访问该路径,不会再出现AppArmor的拒绝日志了。
备注:内容来源于stack exchange,提问作者Pythonaire
相关产品推荐
相关产品推荐

