.png)
Ich kann Dovecot in lxc auf Buster nicht ausführen. Ich schalte PrivateTmp aus, aber das reicht nicht ... Trotzdem:
[ 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"
Antwort1
Haben Sie es mit dem uneingeschränkten AppArmor-Wert versucht?
lxc.apparmor.profile: unconfined
Fügen Sie es in Ihre /etc/pve/lxc/CTID.conf ein.
Antwort2
Das Aktualisieren der Serviceeinheit zur Vermeidung von PrivateTmp funktioniert in LXC leider nicht, ohne die erforderlichen Berechtigungen über AppArmor auf dem Host zu gewähren.
Nachdem ich die Optionen geprüft habe, scheint es keine Möglichkeit mehr zu geben, dies rein innerhalb des Containers zum Laufen zu bringen.
Damit es funktioniert, habe ich alle Änderungen im Container entfernt (also die PrivateTmp-Konfiguration gelöscht) und bin dazu übergegangen, die AppArmor-Richtlinien wie folgt zu ändern:
Erstellen Sie auf dem Host eine neue AppArmor-Richtlinie
/etc/apparmor.d/lxc/lxc-dovecot
und füllen Sie sie mit Folgendem:# 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), }
Laden Sie AppArmor neu mit
$ systemctl restart apparmor.service
Stellen Sie den Container so ein, dass er das neue Profil verwendet, indem Sie Ihrer LXC-Containerkonfiguration die folgende Zeile hinzufügen, normalerweise hier
/var/lib/lxc/$container/config
:# Add or edit the following line to set the apparmor profile used lxc.apparmor.profile = lxc-container-dovecot
Starten Sie Ihren Container neu:
$ lxc-stop -n $container && sleep 1 && lxc-start -d -n $container