Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿Permiso denegado en el socket de Docker? Demuestra cliente, socket y daemon

No normalices chmod 666 o 777 en docker.sock. Conserva identidad, contexto de Docker y socket exacto; separa daemon rootful, rootless y socket montado, y autoriza solo al sujeto necesario.

Ilustración original del límite entre identidad del cliente Docker, metadatos del socket Unix y daemon real.
Ilustración original: demuestra el cliente y socket exactos antes de reparar. Watch at Ease

Un permiso denegado en un socket Unix de Docker significa que el proceso cliente no cruzó ese límite de pathname. No demuestra que el daemon esté parado ni que el endpoint sea /var/run/docker.sock.

Conserva identidad, context, DOCKER_HOST y metadatos del socket. Clasifica daemon rootful del host, daemon rootless del usuario o socket montado en otro contenedor antes de cambiar acceso.

Conserva identidad del cliente y endpoint

Registra error, comando, UID y grupos efectivos. Guarda docker context show, DOCKER_HOST y endpoint resuelto antes de sudo o cambios de grupo.

Inspecciona propietario, grupo, modo y directorios padre del pathname exacto con nombres y números. Un path ausente es otra rama.

Clasifica rootful, rootless y socket montado

Un daemon Linux rootful puede abrir el socket de root al grupo docker. Trata ese grupo como administración privilegiada, no comodidad ordinaria.

En rootless confirma socket y context del usuario. En CI o contenedor de aplicación identifica el socket host montado y separa namespaces.

Demuestra credenciales y GID numérico

Compara el GID numérico del socket con los grupos del proceso que ejecuta Docker. Editar /etc/group no reescribe credenciales de shell, IDE, agent o daemon existentes.

En un montaje, el nombre docker en ambos lados puede tener números distintos. Mapea el GID en el límite del llamador en vez de cambiar el dueño del socket host.

Elige el límite mínimo de autorización

Si se aprueba el grupo rootful, añade solo la identidad necesaria y renueva su sesión. Si el acceso equivalente a root es demasiado amplio, evalúa rootless o un entorno aislado.

No uses chmod 666/777 como reparación duradera. World-write abre una API potente a procesos ajenos y un reinicio puede recrear el socket administrado.

Verifica el daemon esperado sin ocultar el límite

Desde el mismo llamador ejecuta docker context show y docker info o docker version; confirma context, server y opción rootless. El éxito solo con sudo prueba una diferencia de credenciales.

Ejecuta una carga autorizada. Cierra solo cuando el socket no world-write funciona para el sujeto previsto y sigue negando una identidad ajena sin privilegios.

Ilustración original que compara world-write, autorización de grupo rootful y modo rootless.
Ilustración original: elige un límite de autorización sin hacer world-write el socket. Watch at Ease