Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿systemd status=200/CHDIR? Demuestra la vista del sistema de archivos antes de cambiar permisos

Lee la unidad efectiva y el errno exacto del journal; después prueba el directorio como el usuario configurado y dentro del espacio de nombres del servicio, sin User=root ni chmod 777.

Ilustración original: unidad efectiva, errno, vista del servicio y prueba final.
Ilustración original: demuestra la ruta visible antes de cambiar permisos. Watch at Ease

status=200/CHDIR significa que systemd no pudo entrar en el directorio de trabajo solicitado antes de ejecutar el comando del servicio. El ejecutable puede existir y funcionar en tu shell, pero el servicio falla antes, en el límite del directorio.

Conserva la unidad efectiva, la línea completa del journal, el usuario configurado y la vista del sistema de archivos del servicio. Esa evidencia separa una ruta ausente, un padre no atravesable y una discrepancia de espacio de nombres.

Congela la unidad efectiva y el primer fallo

Usa systemctl cat para guardar la unidad y sus drop-ins, y systemctl show para leer User, Group, WorkingDirectory, RootDirectory y RootImage. Conserva el journal alrededor del primer fallo.

No cambies permisos todavía. 200/CHDIR identifica la fase; el errno indica la rama: ruta ausente, permiso denegado, componente que no es directorio u otro resultado.

Resuelve WorkingDirectory en la vista del servicio

Con RootDirectory o RootImage activo, WorkingDirectory se interpreta dentro de esa raíz. Los espacios de nombres de montaje y usuario también cambian lo visible. Que la ruta exista en el host no basta.

Para ENOENT, recorre cada componente en la raíz efectiva. Un guion inicial solo pide ignorar la ausencia. Si systemd debe gestionar el directorio, considera RuntimeDirectory o StateDirectory.

Prueba el recorrido como el usuario configurado

Linux exige permiso de búsqueda en cada componente de directorio. Un padre, una ACL o una política obligatoria puede bloquear el paso. Usa namei -l y una prueba de cd/pwd de solo lectura como el usuario configurado.

Usa User y Group efectivos. El éxito como root no demuestra acceso del servicio. Cambia únicamente propietario, grupo, ACL, bit de búsqueda o regla señalada por la evidencia.

Elige la reparación que corresponde al errno

Para ENOENT corrige la ruta, crea o monta el directorio en la raíz adecuada, o deja de borrarlo. Para EACCES repara el padre o la política concreta; para ENOTDIR encuentra el archivo o enlace roto.

No conviertas User=root ni chmod 777 en la solución. Si el directorio es opcional, elimina la dependencia o usa deliberadamente el guion documentado y explica la alternativa.

Demuestra la salida sin debilitar el servicio

Si cambió la configuración, ejecuta daemon-reload, reinicia una vez y guarda status y journal. Confirma el usuario previsto y que /proc/$MainPID/cwd apunte al directorio esperado.

El incidente termina solo si desaparece 200/CHDIR, la identidad no se debilita, el cwd es correcto y un segundo reinicio también funciona. Conserva la evidencia para comparar cambios futuros.

Ilustración original: ramas ENOENT, EACCES y ENOTDIR u otros errores.
Ilustración original: sigue el errno y repara solo el límite demostrado. Watch at Ease