LXC/LXD 和 AppArmor:权限被拒绝;在受限的情况下尝试加载配置文件?

LXC/LXD 和 AppArmor:权限被拒绝;在受限的情况下尝试加载配置文件?

我正在尝试在主机 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

相关内容