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 

One Solution collect form web for “les sudoers nopasswd changent d'user et le nœud run ne fonctionne pas”

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 
  • sudo sourcing user .bashrc sans impact /root/.bashrc ou / etc / bashrc
  • Linux: permet à l'user d'exécuter une command spécifique au nom de tout autre user
  • comment nier "sudo su"
  • Donner l'access d'un set de commands à un user non root sans sudo
  • Comment configurer «sudo» sans mot de passe sur Linux?
  • Exécuter le script bash en tant que root depuis l'user normal
  • Comment puis-je permettre à tous les users d'exécuter une command donnée via sudo?
  • Autorisez uniquement un user à CHMOD et CHOWN dans leur directory personnel ou dans un directory spécifié
  • Utilisation de NOPASSWD pour des commands spécifiques dans le file sudoers, PASSWD pour tous les autres
  • Utilisation de GREP pour find du text dans les files
  • Comment Amazon ec2-user obtient-il ses droits sudo?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.