Tengo un trabajo Upstart para una aplicación Node.js y quiero que ejecute Node como node
usuario en lugar de root
. Cuando lo uso setuid
en la configuración del trabajo, cada vez que intento iniciar el trabajo, dice my-app stop/waiting
. Sin embargo, si omito setuid
pero uso exec
with sudo
, funciona como espero.
Lo he creado node
como usuario del sistema. Hasta donde yo sé, ese usuario puede acceder a todos los archivos y directorios relevantes. La versión de Upstart que estoy usando es 1.12.1.
Configurar con setuid
:
script
setuid node
chdir /var/app/my-app
exec nodejs server.js
end script
versus la configuración con sudo
:
script
chdir /var/app/my-app
exec sudo -u node nodejs server.js
end script
¿Qué diferencias hay entre setuid
el comportamiento de Upstart y sudo
el comportamiento que haría que uno fracasara y el otro triunfara?
Respuesta1
La setuid
estrofa no debe estar en script
bloque, es global. Probablemente esta sea la razón por la que su trabajo fracasa.
Tenga en cuenta que el uso setuid
harátodoLas fases del trabajo se ejecutan según lo especificado por el usuario y no hay forma de cambiarlo. Si desea ejecutar solo un demonio como un usuario diferente, evítelo sudo
y opte por hacerlo start-stop-daemon
. Esto es especialmente importante con demonios bifurcados. Compruebe UbuntuLibro de cocina advenedizo, capítulo 11.43.2 para más detalles.