Monte el directorio de invitados LXD sin destruir datos y propiedad

1

He creado un invitado LXD para alojar mi servidor web, y para acceder fácilmente a la raíz del documento, hice:

lxc config device add guest sharedhtml disk path=/document/root/ source=/home/$USER/public_html

Esto hizo dos cosas:

  • completamente reemplazado /document/root/con public_html/(todos los archivos predeterminados del servidor web se han ido, ya que public-htmlestá vacío)
  • /document/rootconfiguración de propiedad destruida ; el directorio y los archivos que creo public_html/ahora son propiedad denobody:nogroup

Según tengo entendido, esto es más como un montaje inverso; en lugar de montar el directorio del invitado, el directorio del host se monta de forma inversa en el invitado.

¿Cómo puedo montar el directorio de invitados en el host sin destruir los contenidos existentes para que los cambios hereden la configuración de propiedad del directorio de invitados?

Bono: ¿cómo elimino el deviceque está montando el directorio?

Oxwivi
fuente

Respuestas:

1

Para eliminar la entrada que creó, lo siguiente debería hacer el truco:

lxc config device remove sharedhtml

Ahora parece que LXD hizo exactamente lo que se suponía que debía hacer en este caso. El comando que ejecutó le indica a LXD que monte / home / $ USER / public_html desde el host al contenedor como contenedor / documento / raíz

Como los contenedores LXD se ejecutan usando un mapa uid / gid diferente del host, la propiedad de los archivos del host no se puede representar dentro del contenedor, lo que lleva al núcleo a mostrarlos como nobody: nogroup.

No existe un mecanismo para montar una ruta dentro del contenedor en el host y es poco probable que agreguemos algo así pronto.

De todos modos, en su caso, lo que probablemente debería hacer es tener una ruta de almacenamiento en el host para los archivos de su servidor web, luego tener esta configuración como una entrada de disco del dispositivo en LXD para que se monte en la ubicación correcta dentro del contenedor.

Luego configure las ACL POSIX en el host para que tanto el uid / gid del contenedor puedan acceder a los archivos como a su propio usuario también.

En la mayoría de los casos, el contenedor uid y gid en el host será 165536 + uid o gid dentro del contenedor. Una forma más fácil de resolverlo es hacer que la ruta en el host se pueda escribir temporalmente en el mundo, luego escriba algo en la ruta dentro del contenedor y confirme quién aparece como el propietario en el host.

Stgraber
fuente
Hola, gracias por la respuesta, pero he estado buscando problemas de GitHub al respecto desde que publiqué esto, y resumiste muy bien tus respuestas allí. Finalmente recurrí simplemente ln -sal director y funcionó bien con los permisos correctos. Olvidé publicar mi propia respuesta aquí.
Oxwivi