14 votos

¿Cómo empezar a puestos de trabajo como un usuario no privilegiado en Upstart?

Yo estoy usando la última advenedizo versión para ubuntu 10.4 LTS. upstart es lanzado con --depuración del núcleo de la flag.

Estoy haciendo un trabajo personalizado de configuración para nzbget demonio. Básicamente, este trabajo tiene un pre-script de inicio que se monta un sistema de ficheros, un post-script de inicio que desmonta el sistema de archivos y un exec nzbget -D línea.

El problema es que la nzbget demonio necesita para funcionar como un no privilleged usuario. Esta función ya está incluida en nzbget. De hecho, cuando ejecuto desde la consola de sudo nzbget -D el proceso se ejecuta como un no usuario con privilegios. Pero cuando inicio el arranque del trabajo con la exec nzbget -D línea, el proceso de nzbget -D se ejecuta como root. Como se dijo en el arranque del libro de cocina, traté de usar su-c "nzbget -D" del usuario y también de start-stop-daemon tanto sin esperar estrofa como aconsejó. Pero para los dos comandos, como upstart pistas equivocadas PID supongo que ve en el proceso principal como muerto (debido a upstart registros) al final del proceso de inicio y por lo tanto, se inicia el proceso posterior de secuencia de comandos que no quiero.

= > ¿Cómo puedo hacer eso? ¿Cómo es que exec nzbget -D advenedizo comando hace que el proceso se ejecute como root, mientras que sudo nzbget -D comando hace que se ejecute como no privilleged de usuario?

12voto

Berek Bryan Puntos 349

El progreso fue hecho para esta justo ayer con el lanzamiento de la versión 1.4 .

Nuevo "setuid" y "setgid" estrofas para permitir que el sistema de los trabajos a ejecutarse bajo el especificado uid/gid correspondiente al nombre/grupo.

Se puede tomar desde su página de LaunchPad pero (extrañamente) no puedo ver un PPA por lo que podría tener que compilarlo usted mismo.

De lo contrario, use su o sudo en su comando exec así:

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

Ambos hacen casi lo mismo así que escoja lo que usted es feliz con. Así que utilizar su comando de ejemplo:

exec sudo -u me "nzbget -D"

4voto

Michael K Puntos 3235

Sugiero usar sudo con la siguiente sintaxis:

sudo -u foouser foocommand

Esto ejecuta el comando foocommand como usuario foouser.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: