comment exécuter un script en tant qu'autre utilisateur sans mot de passe

J'ai script.sh cela doit être exécuté en tant qu'user2. Cependant, ce script ne peut être exécuté que sous user1 dans mon application.

Je voudrais que la commande suivante s'exécute:

su user2 -C script.sh

, Mais être capable de fonctionner sans mot de passe.

Je veux aussi que cela soit très restrictif, car dans user1 ne peut fonctionner que script.sh sous user2 et rien d'autre.

J'ai essayé de le faire avec le fichier sudoers et je suis devenu sans cesse confus après des heures d'essai.

Si quelqu'un peut fournir un exemple explicite de la façon dont cela peut être accompli (au lieu de quelque chose de générique comme use sudoers), il serait grandement apprécié.

130
demandé sur Paul Sonier 2011-08-02 03:33:23

2 réponses

Appelez visudo et ajoutez ceci:

user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh

Les chemins de commande doivent être absolus! Ensuite, appelez sudo -u user2 /home/user2/bin/test.sh à partir d'un shell user1. Faire.

107
répondu pyroscope 2015-08-19 12:34:27

Essayez d'exécuter:

su -c "Your command right here" -s /bin/sh username

Cela exécutera la commande en tant que nom d'utilisateur étant donné que vous avez des autorisations pour sudo en tant qu'utilisateur.

179
répondu Jeronimo Robles 2012-09-21 15:06:20