les sudoers nopasswd changent d'user et le nœud run ne fonctionne pas

J'essaie d'empêcher une invite de mot de passe sur une command qui exécute le noeud en tant qu'user www en ajoutant la ligne suivante au bas de mon file / etc / sudoers:

gituser ALL=(ALL) NOPASSWD: /usr/bin/sudo -u web-user NODE_ENV=production /path/to/node app.js 

J'ai également essayé de mettre la command dans un script shell et de l'exécuter, mais pas de joie non plus:

 gituser ALL=(root) NOPASSWD: /usr/local/sbin/startnode 

Est-ce que quelqu'un a des idées sur ce que je fais mal?

En fin de count, je fonctionnerai comme un service upstart, de sorte que la command sera "sudo service runnode stop / start" et déclenchée à partir d'un crochet git, mais je suppose que le principe sera le même.

FYI, contenu complet du file sudoers:

 Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Defaults root ALL=(ALL:ALL) ALL %admin ALL=(ALL) ALL %sudo ALL=(ALL) ALL gituser ALL=(ALL) NOPASSWD: /usr/bin/sudo -u web-user NODE_ENV=production /path/to/node app.js gituser ALL=(root) NOPASSWD: /usr/local/sbin/startnode 

Merci à tous pour vos réponses. J'ai réussi à fonctionner à la fin avec l'aide de cette publication en procédant comme suit:

1. Utilisation d'un script séparé

Ajoutez cette ligne au file sudoers (en utilisant visudo).

 gituser ALL=(web-user) NOPASSWD: /usr/local/sbin/startnode 

Contenu du file / usr / local / sbin / startnode modifié à la suite:

 #!/bin/bash cd /var/www/api.vitdsunshine.com/sun-express ########## BEFORE # sudo -u web-user NODE_ENV=production /path/to/node app.js ########## AFTER NODE_ENV=production /path/to/node app.js 

Cela va maintenant fonctionner:

 $ sudo -u web-user startnode 

2. En utilisant la command complète

Ajoutez cette ligne au file sudoers (en utilisant visudo).

 gituser ALL=(web-user) NOPASSWD: /path/to/node 

En essayant de définir une variable env comme partie de la command, elle provoque l'échec.

 $ sudo -u web-user NODE_ENV=production /path/to/node app.js sudo: sorry, you are not allowed to set the following environment variables: NODE_ENV 

La solution: vous devez définir ce env var dans le file .bashrc de l'user Web ou / etc / environment.

 $ sudo -u web-user /path/to/node app.js env production Express server listning on port 9000