.png)
Buster の lxc で dovecot を実行できません。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"
答え1
制限のない AppArmor 値を試しましたか?
lxc.apparmor.profile: unconfined
/etc/pve/lxc/CTID.confに設定してください。
答え2
残念ながら、ホスト上の AppArmor 経由で必要な権限を付与しないと、PrivateTmp を回避するためにサービス ユニットを更新しても LXC では機能しません。
オプションを検討した結果、コンテナ内だけでこれを機能させる方法はもうないようです。
これを機能させるために、コンテナ内のすべての編集を削除し (つまり、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