我正在尝试在主机 Arch Linux 上的 LXD 容器内的 Ubuntu 16.04 上运行防火墙 (Zentyal)。它需要一些 AppArmor 功能才能完成其工作(主要是 DHCP),因此我在主机上安装了启用 AppArmor 的内核,并根据我在互联网上找到的与 AppArmor 相关的每个要点设置了 LXD 配置,因此它看起来不像这样:
name: router
profiles:
- default
config:
raw.lxc: lxc.aa_profile= unconfined
security.nesting: "true"
security.privileged: "true"
volatile.base_image: 9c774bed40a5a8a34c2c96c1a93f4d46b0f59cda96defc07bc2c29cf473beb22
volatile.eth0.name: eth0
volatile.eth1.name: eth1
volatile.last_state.idmap: '[]'
volatile.last_state.power: RUNNING
devices:
eth0:
nictype: physical
parent: enp2s0
type: nic
eth1:
nictype: bridged
parent: br0
type: nic
root:
path: /
type: disk
ephemeral: false
但是,我仍然在 Zentyal 日志中收到这些错误:
2016/12/22 22:56:48 ERROR> Service.pm:964 EBox::Module::Service::restartService - root command /sbin/apparmor_parser --write-cache --replace /etc/apparmor.d/usr.sbin.named failed.
2016/12/22 22:59:43 ERROR> Sudo.pm:240 EBox::Sudo::_rootError - root command /sbin/apparmor_parser --write-cache --replace /etc/apparmor.d/usr.sbin.dhcpd failed.
2016/12/22 22:59:43 ERROR> Service.pm:962 EBox::Module::Service::restartService - Error restarting service: root command /sbin/apparmor_parser --write-cache --replace /etc/apparmor.d/usr.sbin.dhcpd failed.
2016/12/22 22:59:43 ERROR> Service.pm:964 EBox::Module::Service::restartService - root command /sbin/apparmor_parser --write-cache --replace /etc/apparmor.d/usr.sbin.dhcpd failed.
2016/12/22 22:59:44 ERROR> Sudo.pm:240 EBox::Sudo::_rootError - root command /sbin/apparmor_parser --write-cache --replace /etc/apparmor.d/usr.sbin.named failed.
2016/12/22 22:59:44 ERROR> Service.pm:962 EBox::Module::Service::restartService - Error restarting service: root command /sbin/apparmor_parser --write-cache --replace /etc/apparmor.d/usr.sbin.named failed.
2016/12/22 22:59:44 ERROR> Service.pm:964 EBox::Module::Service::restartService - root command /sbin/apparmor_parser --write-cache --replace /etc/apparmor.d/usr.sbin.named failed.
当我尝试运行其中一个命令以获取更直接的错误时,我得到了以下信息:
/sbin/apparmor_parser --write-cache --replace /etc/apparmor.d/usr.sbin.dhcpd
/sbin/apparmor_parser: Unable to replace "/usr/sbin/dhcpd". Permission denied; attempted to load a profile while confined?
这里还有什么可以做的吗,或者根本就不可行?
答案1
aa-complain appname
将关闭限制但仍然会抱怨并写入日志。
安装
sudo apt-get install apparmor-utils
sudo aa-logprof
将查看日志并询问您是否要为所有可用配置文件启用某些权限。
sudo aa-cleanprof appname or /pathto/app
将清除现有配置文件
sudo aa-genprof appname or /pathto/app
将生成一个新的配置文件并扫描日志以查找所需的更改。
sudo aa-autodep appname or /pathto/app
将尝试为应用程序创建配置文件和所有依赖项。
您可以设置aa-complain appname
然后运行要对应用程序执行的步骤。打开、关闭、重新启动、重新加载、打开文件等。然后运行aa-logprof
以使 apparmor 查找您可以批准或拒绝的更改。
如果这不起作用,aa-cleanprof appname
那么这aa-autodep appname
是创建新配置文件的最快方法。如果您收到有关现有配置文件的投诉,请转到/etc/apparmor.d/
并将mv
其发送到 profilename_OLD
。