Las actualizaciones de aplicaciones autoalojadas tienen menos probabilidades de crear archivos propiedad de root cuando el despliegue fija un contrato de usuario numérico y valida la propiedad de los volúmenes antes de reemplazar el contenedor.
La medida preventiva consiste en dejar de tratar el nombre de usuario interno de la imagen como una identidad de almacenamiento estable. Registra el UID y el GID efectivos que escriben datos persistentes, asígnalos a directorios del host o volúmenes con nombre, conserva cualquier configuración de PUID/PGID o de espacios de nombres de usuario y prueba la nueva imagen con una ruta pequeña con permisos de escritura antes del despliegue completo. Así, una actualización de la imagen no podrá cambiar silenciosamente el propietario numérico de la configuración, las cargas, las bases de datos o los metadatos multimedia.
Registra el UID y el GID numéricos antes de actualizar
Captura el usuario del proceso en ejecución, el grupo principal, los grupos suplementarios y la propiedad numérica de archivos representativos en cada montaje con permisos de escritura. Guarda el resumen de propiedad junto al resumen criptográfico o la versión de la imagen.
La guía de Docker para crear imágenes indica que los IDs explícitos evitan las variaciones entre compilaciones, ya que los usuarios de imagen asignados automáticamente pueden recibir distintos IDs numéricos entre compilaciones.
Registra los números, no solo nombres como app o media. Una nueva imagen puede reutilizar el mismo nombre de usuario y cambiar su UID, mientras que los archivos del host almacenan la propiedad numérica.
Fija el usuario de ejecución en el contrato de despliegue
Cuando la imagen permita ejecutarse directamente con una cuenta sin privilegios, especifica explícitamente el usuario y el grupo previstos en Compose o en la configuración de ejecución. Si la imagen requiere una fase de inicialización como root, documenta qué proceso posterior escribe realmente los datos persistentes.
La especificación de imágenes de Open Container define User como valor predeterminado de ejecución, lo que significa que una imagen modificada puede alterar la identidad de ejecución a menos que el despliegue la anule o la valide intencionadamente.
No fuerces un UID sin privilegios arbitrario en imágenes que requieran un modelo de inicialización compatible. El contrato debe seguir el diseño documentado de la aplicación y, al mismo tiempo, mantener predecible el propietario resultante de los archivos persistentes.
Mantén PUID y PGID alineados con la propiedad del host
En las imágenes que exponen variables PUID y PGID, fija esos valores en la configuración de Compose o del entorno bajo control de versiones y asegúrate de que los directorios de volumen del host pertenezcan a la cuenta de servicio correspondiente.
LinuxServer explica que PUID asigna la identidad de las escrituras del contenedor, de modo que los archivos creados en volúmenes asignados sigan siendo gestionables fuera del contenedor.
Antes de actualizar, compara los IDs configurados con id en el host y con la propiedad de los archivos existentes. No copies a ciegas un valor de ejemplo como 1000 en un servidor donde ese ID pertenezca a otra persona o servicio.
Ten en cuenta los espacios de nombres de usuario y la asignación sin root
Docker o Podman sin root pueden hacer que un proceso parezca root dentro del contenedor mientras lo asignan a un UID sin privilegios en el host. Registra el modo del espacio de nombres y la configuración de UID/GID subordinados antes de interpretar los cambios de propiedad.
Las opciones de ejecución de Podman muestran que keep-id conserva la asignación del usuario cuando un contenedor necesita acceso predecible a archivos montados desde el host.
No «corrijas» un propietario que parece root dentro del contenedor hasta inspeccionar el ID numérico en el host. El root del espacio de nombres y el root del host no siempre son la misma identidad.
Prueba previamente la nueva imagen con un volumen de prueba
Antes de reemplazar el contenedor de producción, ejecuta la nueva imagen con el UID/GID previsto y un directorio temporal que reproduzca los permisos de producción. Deja que la inicialización de arranque cree un archivo y un directorio, y después inspecciona su propiedad en el host.
La guía de depuración de volúmenes sin root de Red Hat demuestra que la propiedad del host sigue la asignación de UID, en lugar de que el nombre de usuario mostrado dentro del contenedor sea evidencia suficiente.
Si la prueba crea archivos inesperadamente propiedad de root o reasignados, detén el despliegue y compara el usuario de la imagen, el punto de entrada, el espacio de nombres y la configuración de los montajes. Es mucho más seguro que descubrir el cambio después de que una migración recursiva de arranque haya afectado a todo un árbol de fotos o de base de datos.
Verifica los grupos suplementarios y las rutas con permisos de escritura
Algunas aplicaciones necesitan un UID de servicio principal y acceso mediante un grupo compartido de multimedia, descargas o dispositivos. Registra esos IDs de grupo y prueba todas las rutas con permisos de escritura, no solo el directorio de configuración.
Kubernetes utiliza controles explícitos de runAsUser y runAsGroup, lo que ilustra el mismo principio de propiedad de Linux incluso fuera de un despliegue sencillo con Docker Compose.
La política de actualización está completa cuando la nueva imagen crea archivos con la propiedad esperada en el host en todas las rutas persistentes y supera la recreación de un contenedor. El artículo relacionado de ZimaSpace sobre archivos propiedad de root después de actualizar una imagen es la vía de recuperación si un despliegue ya ha generado datos propiedad de root.
Soporte y Consejos
Más para leer

¿Puede Plex compartir una GPU con otro contenedor de Docker?
Plex y otro contenedor suelen poder acceder a la misma GPU, pero debes probar la compatibilidad de los controladores, la asignación de dispositivos, la...

Cómo saber si un error de Plex proviene del cliente o del servidor
Reproduce el mismo elemento en otro cliente, compara la ruta de la sesión y recopila pruebas del servidor solo después de que el alcance...

Cómo configurar la caché de Plex y el almacenamiento temporal para la transcodificación
Protege el estado persistente de Plex mientras colocas los archivos temporales de transcodificación en un almacenamiento local adecuado; después, verifica la limpieza, el espacio...

