Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿systemd muestra status=203/EXEC? Demuestra primero el ejecutable, intérprete y contexto

Un comando que funciona en tu shell puede fallar antes de iniciar como servicio. Conserva el journal, inspecciona el ExecStart efectivo y comprueba ruta, shebang, directorios, montaje y política dentro del contexto de la unidad.

Ilustración original que sigue ExecStart, rutas, shebang y contexto hasta clases de error execve.
Ilustración original: conserva la clase execve antes de reparar. Watch at Ease

status=203/EXEC significa que systemd llegó al paso de ejecutar el programa configurado, pero execve no lo inició. El shell de inicio puede diferir en token, directorio, usuario, montaje o contexto de seguridad.

No empieces con chmod 777, un envoltorio de shell ni una política desactivada. Guarda el primer journal, lee la unidad combinada y clasifica la ruta del ejecutable o intérprete.

Conserva la primera evidencia

Guarda status y el primer journal; registra system/--user, unidad, arranque, hora y línea 203/EXEC.

Usa systemctl cat para unidad y drop-ins, y show para ExecStart, User, Group y WorkingDirectory; compara con el comando del shell.

Resuelve el ejecutable y toda la ruta

Toma el primer token del ExecStart efectivo, resuelve enlaces y usa file y namei -l para revisar cada directorio sin ampliar permisos ajenos.

Lee la primera línea del script como bytes; confirma el intérprete absoluto y que no haya retorno de carro oculto. Un intérprete ausente puede dar ENOENT aunque exista el script.

Prueba el contexto del servicio

Reproduce usuario y directorio, pero sudo -u es parcial: la unidad real cambia entorno, espacios de nombres, capacidades y visibilidad. Prioriza unidad y journal reales.

Usa findmnt -T en ejecutable e intérprete para noexec. Si ruta y modo pasan, revisa AVC recientes y journal en vez de desactivar la política.

Repara solo el límite demostrado

Corrige ExecStart, instala el intérprete, arregla shebang o final de línea, o concede acceso mínimo. Para noexec, mueve a una ruta aprobada o confirma la política con el propietario.

Ante SELinux, verifica etiquetas y ubicaciones estándar y analiza la causa. No saltes a permissive global ni a una regla amplia.

Recarga solo cambios y observa un inicio

Ejecuta daemon-reload solo si cambió la unidad. Inicia una vez y revisa status y el nuevo journal de inmediato.

Confirma PID principal, hijos, directorio y una solicitud real; guarda la unidad efectiva y el cambio estrecho.

Ilustración original con la ruta segura de decisión para systemd 203/EXEC.
Ilustración original: verifica unidad y contexto antes de permisos o política. Watch at Ease