¿Cómo inicio trabajos como usuario no privilegiado en Upstart?


14

Estoy usando la última versión de arranque para ubuntu 10.4 LTS. upstart se inicia con --debug kernel flag.

Estoy haciendo una configuración de trabajo personalizada para nzbget daemon. Básicamente, este trabajo tiene una secuencia de comandos previa al inicio que monta un sistema de archivos, una secuencia de comandos posterior al inicio que desmonta el sistema de archivos y una exec nzbget -Dlínea.

El problema es que el demonio nzbget necesita ejecutarse como un usuario no privilegiado. Esta característica ya está incluida en nzbget. De hecho, cuando ejecuto desde la consola, sudo nzbget -Del proceso se ejecuta como un usuario no privilegiado. Pero cuando comienzo el trabajo inicial con la exec nzbget -Dlínea, el proceso nzbget -D se ejecuta como root. Como se dijo en el nuevo libro de cocina, intenté usar su -c "nzbget -D" user y también start-stop-daemon sin la estrofa esperada como se aconseja. Pero supongo que para ambos comandos, como el seguimiento inicial rastrea el PID incorrecto, ve el proceso principal como cancelado (debido a los registros de inicio) al final del proceso de inicio y, por lo tanto, lanza el script posterior al proceso que no quiero.

=> ¿Cómo puedo hacerlo bien? ¿Cómo es que el exec nzbget -Dcomando upstart hace que el proceso se ejecute como root mientras que el sudo nzbget -Dcomando hace que se ejecute como usuario no privilegiado?

Respuestas:


12

Hubo algún progreso con el lanzamiento de la versión 1.4 .:

Nuevas estrofas "setuid" y "setgid" para permitir que los trabajos del sistema se ejecuten bajo el uid / gid especificado correspondiente al nombre / grupo dado.

Puede obtenerlo de su página de LaunchPad pero (extrañamente) no puedo ver un PPA, por lo que es posible que deba compilarlo usted mismo.

De lo contrario, use suo sudoen su comando exec así:

su -c "<commands>" <username>
sudo -u <username> <commands>

Ambos hacen casi lo mismo, así que elige el que sea más feliz. Entonces, usando su comando de ejemplo:

exec sudo -u me "nzbget -D"

el nombre de dominio upstart.at es no muerto
contrato del Prof. Falken incumplió

¡Gracias por esto! No estaba claro para mí en los documentos de Upstart si debería usar Session Init / Jobs, etc.
Luke Hoersten

4

Sugiero usar sudo con la siguiente sintaxis:

sudo -u foouser foocommand

Esto ejecuta el comando foocommand como usuario foouser.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.