Я пытаюсь выполнить брандмауэр (Zentyal) на Ubuntu 16.04 в контейнере LXD сверху хоста Arch Linux. Это требует, чтобы некоторая функциональность AppArmor сделала свою вещь (главным образом, DHCP), таким образом, я установил AppArmor-поддерживающее ядро на хосте и настроил конфигурацию LXD согласно каждому резкому, я нашел в Интернете, который имел отношение к AppArmor, таким образом, это не похоже так:
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?
Есть ли что-то больше, которое может быть сделано здесь, или разве это просто не выполнимо?
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
.