Dovecot lxc apparmor denied (Buster)

Я не могу запустить 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"
0
задан 22 July 2019 в 21:41
2 ответа

Вы попробованный неограниченным значением AppArmor?

lxc.apparmor.profile: unconfined

Набор это в Ваш/etc/pve/lxc/CTID.conf

0
ответ дан 23 November 2019 в 22:44

Обновление служебного модуля, чтобы избежать PrivateTmp, к сожалению, не работает в LXC без предоставления необходимых привилегий через AppArmor на хосте.

После изучения вариантов кажется, что больше нет способа заставить эту работу работать исключительно внутри контейнера.

Чтобы заставить его работать, я удалил все правки в контейнере (так что избавился от конфигурации PrivateTmp) и перешел к изменению политик AppArmor следующим образом:

  1. На хосте создайте новую политику 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),
    }
    
  2. Перезагрузите AppArmor с помощью

     $ systemctl restart apparmor.услуга
    
  3. Настройте контейнер для использования нового профиля, добавив следующую строку в конфигурацию контейнера LXC, обычно в / var / lib / lxc / $ container / config :

     # Добавьте или отредактируйте следующая строка для установки используемого профиля apparmor
    lxc.apparmor.profile = lxc-контейнер-голубятня
    
  4. Перезагрузите контейнер:

     $ lxc-stop -n $ container && sleep 1 && lxc-start -d -n $ container
    
0
ответ дан 28 March 2020 в 19:51

Теги

Похожие вопросы