web-dev-qa-db-fra.com

Comment exécuter le script en tant qu'autre utilisateur sans mot de passe?

J'ai script.sh qui doit être exécuté en tant qu'utilisateur2. Toutefois, ce script ne peut être exécuté que sous utilisateur1 dans mon application.

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

su user2 -C script.sh

mais être capable de courir sans mot de passe.

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

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

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

138
user788171

Appelez visudo et ajoutez ceci:

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

Les les chemins de commande doivent être absolus! Appelez ensuite Sudo -u user2 /home/user2/bin/test.sh à partir d'un user1 Shell. Terminé.

114
pyroscope

essayez de courir:

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 disposez des autorisations pour Sudo en tant qu'utilisateur.

190
Jeronimo Robles
`su -c "Your command right here" -s /bin/sh username`

La commande ci-dessus est correcte, mais sous Red Hat, si selinux l’applique, elle ne permettra pas à cron d’exécuter des scripts en tant qu’autre utilisateur. exemple; execl: couldn't exec /bin/sh execl: Permission denied

Je devais installer setroubleshoot et setools et exécuter ce qui suit pour l'autoriser:

yum install setroubleshoot setools
sealert -a /var/log/audit/audit.log
grep crond /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.p
0
C Jaskoski