Aparición de Dovecot lxc denegada (Buster)

Aparición de Dovecot lxc denegada (Buster)

No puedo ejecutar dovecot en lxc en Buster. Desactivo PrivateTmp, pero no es suficiente... Aún así:

[ 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"

Respuesta1

¿Probaste con el valor ilimitado de AppArmor?

lxc.apparmor.profile: unconfined

Configúrelo en su /etc/pve/lxc/CTID.conf

Respuesta2

Desafortunadamente, actualizar la unidad de servicio para evitar PrivateTmp no funciona en LXC sin otorgar los privilegios necesarios a través de AppArmor en el host.

Después de explorar las opciones, parece que ya no hay una manera de hacer que esto funcione únicamente desde el contenedor.

Para que funcione, eliminé todas las ediciones en el contenedor (así que me deshice de la configuración de PrivateTmp) y pasé a modificar las políticas de AppArmor de la siguiente manera:

  1. En el host, cree una nueva política de AppArmor /etc/apparmor.d/lxc/lxc-dovecoty rellénela con lo siguiente:

    # 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),
    }
    
  2. Vuelva a cargar AppArmor con

    $ systemctl restart apparmor.service
    
  3. Configure el contenedor para usar el nuevo perfil agregando la siguiente línea a la configuración de su contenedor LXC, generalmente en /var/lib/lxc/$container/config:

    # Add or edit the following line to set the apparmor profile used
    lxc.apparmor.profile = lxc-container-dovecot
    
  4. Reinicie su contenedor:

    $ lxc-stop -n $container && sleep 1 && lxc-start -d -n $container
    

información relacionada