4 votes

Comment exécuter un script shell dans un autre utilisateur sans saisir de mot de passe

Je voudrais automatiser un travail dans Hudson, mais Hudson utilise toujours l'utilisateur hudson pour exécuter les scripts. Ce que je veux, c'est exécuter le script en tant qu'autre utilisateur.

J'ai consulté les réponses de ServerFault, mais je n'ai trouvé qu'une solution qui utilise la commande su, ce qui nécessite que je saisisse le mot de passe de l'utilisateur cible. Cela ne fonctionnera pas pour les scripts automatisés.

Quelqu'un pourrait-il m'aider avec cela? Merci.

9voto

Kyle Smith Points 9443

Vous pouvez utiliser sudo pour cela. Tout d'abord, vous devez modifier le fichier /etc/sudoers pour ajouter une règle qui autorise l'utilisateur hudson à devenir un autre utilisateur pour le script en question. Supposons que vous ayez un compte user1 qui doit exécuter /usr/local/bin/my_script.sh.

Exécutez visudo pour modifier le fichier sudoers, et ajoutez une ligne comme celle-ci :

hudson ALL=(user1) NOPASSWD: /usr/local/bin/my_script.sh

Ensuite, utilisez la commande sudo suivante pour exécuter le script à partir de hudson :

sudo -u user1 /usr/local/bin/my_script.sh

Il est très important d'utiliser visudo pour modifier le fichier sudoers afin de vérifier le fichier pour les erreurs avant de le mettre en place. De plus, je vous suggère de lire rapidement le man sudoers afin de comprendre clairement ce que fait ce qui précède avant de l'ajouter à votre configuration.

1voto

Rob Van Dam Points 5073

Commenter l'entrée Defaults requiretty dans /etc/sudoers ou d'autres fichiers sudo inclus devrait aider.

Quant à l'erreur perl - vous utilisez probablement un PERL5LIB différent ou un binaire perl différent pour cet utilisateur - et cela ne sera pas transmis via sudo (sauf si vous utilisez -E ou env_keep). Vérifiez votre environnement et éventuellement, les permissions.

0voto

pgs Points 3441

sudo -u hudson command exécutera la commande en tant qu'utilisateur hudson. Il doit être configuré dans votre fichier sudoers, où vous pouvez également le configurer pour ne pas nécessiter de mot de passe.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X