Mejores prácticas para ejecutar imágenes de contenedores como otro usuario

Mejores prácticas para ejecutar imágenes de contenedores como otro usuario

Estoy usando Kubernetes y me gustaría ejecutar un contenedor como usuario no root.

Si estoy escribiendo mi propio Dockerfile, puedo useraddejecutarlo chmod 777con Docker --user <username>.

Pero en algunos casos, la lista de archivos que deben editarse chmodpuede ser larga y desconocida, lo que se convierte en un proceso tedioso y puede cambiar con el tiempo y causar errores que solo se encuentran en tiempo de ejecución.

¿Existe una mejor práctica? ¿Cómo manejarías carpetas como /var/logy /var/run? Una opción es tocar/mkdir y usar setfacl.

Lo más fácil es simplemente hacerlo chmod 777 -R /var/log.

¿Pero eso 777también le daría acceso al contenedor en el host? ¿Cómo se asigna cuando el contenedor tiene un conjunto de permisos, pero el host tiene otro?

Respuesta1

Básicamente, el uso chmod 777nunca es la solución adecuada. Descubra cómo configurar sus permisos correctamente. Los permisos casi siempre deben ser los mínimos posibles para lograr su objetivo.

La forma de hacerlo depende en gran medida del contexto de la imagen específica y del software que esté ejecutando.

¿Pero eso también le daría al contenedor 777 acceso al host?

Depende de si la ruta en la que está cambiando los permisos es o será un montaje de enlace.

Respuesta2

Encontré esto relevante para mi propia pregunta:

El sistema de archivos superpuesto monta un directorio inferior y luego adjunta un directorio superior al punto de montaje combinado. Cuando un proceso escribe en un archivo nuevo en el directorio fusionado, el nuevo archivo se escribe en el directorio superior. Cuando un proceso modifica un archivo existente en el directorio inferior, el kernel copia el archivo del directorio inferior al directorio superior y permite que el proceso modifique el archivo en el directorio superior.

Por lo tanto, chownen un directorio superpuesto (superior) no debería tener ningún efecto en el directorio host (inferior).

Pero supongo que chmod 777podría permitir que otros usuarios accedan al sistema de archivos superpuesto en el host.

información relacionada