Я не могу запустить dovecot в lxc на Buster. Я выключаю 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"
Вы попробованный неограниченным значением AppArmor?
lxc.apparmor.profile: unconfined
Набор это в Ваш/etc/pve/lxc/CTID.conf
Обновление служебного модуля, чтобы избежать PrivateTmp, к сожалению, не работает в LXC без предоставления необходимых привилегий через AppArmor на хосте.
После изучения вариантов кажется, что больше нет способа заставить эту работу работать исключительно внутри контейнера.
Чтобы заставить его работать, я удалил все правки в контейнере (так что избавился от конфигурации PrivateTmp) и перешел к изменению политик AppArmor следующим образом:
На хосте создайте новую политику AppArmor по адресу / etc / apparmor.d / lxc / lxc-dovecot
и заполните его следующим:
# Не загружать этот файл. Лучше загрузите /etc/apparmor.d/lxc-containers, который
# будет источником всех профилей в /etc/apparmor.d/lxc
profile lxc-container-dovecot flags = (attach_disconnected, mediate_deleted) {
#include <абстракции / lxc / container-base>
#include <абстракции / lxc / start-container>
запретить монтировать fstype = devpts,
смонтировать fstype = cgroup -> / sys / fs / cgroup / **,
смонтировать fstype = cgroup2 -> / sys / fs / cgroup / **,
параметры монтирования = (rw, привязать),
параметры монтирования = (rw, rbind),
параметры монтирования = (rw, rshared),
параметры монтирования = (ro, nosuid, noexec, remount, bind, strictatime),
}
Перезагрузите AppArmor с помощью
$ systemctl restart apparmor.услуга
Настройте контейнер для использования нового профиля, добавив следующую строку в конфигурацию контейнера LXC, обычно в / var / lib / lxc / $ container / config
:
# Добавьте или отредактируйте следующая строка для установки используемого профиля apparmor
lxc.apparmor.profile = lxc-контейнер-голубятня
Перезагрузите контейнер:
$ lxc-stop -n $ container && sleep 1 && lxc-start -d -n $ container