Dovecot lxc apparmor запрещен (Бастер)
Я не могу запустить dovecot в lxc на Бастере. Я отключаю PrivateTmp, но этого недостаточно... Тем не менее:
[ 4850.883141] audit: type=1400 audit(1563803461.322:34): apparmor="DENIED" operation="mount" info="failed flags match" error=-13 profile="lxc-container-default-cgns" name="/" pid=23810 comm="(dovecot)" flags="rw, rslave"
0 ответов
Вы пробовали с неограниченным значением AppArmor?
lxc.apparmor.profile: unconfined
Установите его в свой /etc/pve/lxc/CTID.conf
К сожалению, обновление служебного модуля, чтобы избежать PrivateTmp, не работает в LXC без предоставления необходимых привилегий через AppArmor на хосте.
После изучения вариантов кажется, что больше нет способа заставить эту работу работать исключительно внутри контейнера.
Чтобы заставить его работать, я удалил все правки в контейнере (поэтому избавился от конфигурации PrivateTmp) и перешел к изменению политик AppArmor следующим образом:
На хосте создайте новую политику AppArmor по адресу
/etc/apparmor.d/lxc/lxc-dovecot
и заполните его следующим:# Do not load this file. Rather, load /etc/apparmor.d/lxc-containers, which # will source all profiles under /etc/apparmor.d/lxc profile lxc-container-dovecot flags=(attach_disconnected,mediate_deleted) { #include <abstractions/lxc/container-base> #include <abstractions/lxc/start-container> deny mount fstype=devpts, mount fstype=cgroup -> /sys/fs/cgroup/**, mount fstype=cgroup2 -> /sys/fs/cgroup/**, mount options=(rw,bind), mount options=(rw,rbind), mount options=(rw,rshared), mount options=(ro,nosuid,noexec,remount,bind,strictatime), }
Перезагрузите AppArmor с помощью
$ systemctl restart apparmor.service
Настройте контейнер для использования нового профиля, добавив следующую строку в конфигурацию контейнера LXC, обычно по адресу
/var/lib/lxc/$container/config
:# Add or edit the following line to set the apparmor profile used lxc.apparmor.profile = lxc-container-dovecot
Перезагрузите контейнер:
$ lxc-stop -n $container && sleep 1 && lxc-start -d -n $container