J'ai script.sh qui doit être exécuté en tant que 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 pouvoir fonctionner sans mot de passe.
Je veux également que cela soit très restrictif, car dans user1 ne peut exécuter script.sh que sous user2 et rien d'autre.
J'ai essayé de faire cela avec le fichier sudoers et je suis devenu sans cesse confus après des heures d'essais.
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), ce serait grandement apprécié.
Réponses:
Appelez
visudo
et ajoutez ceci:Les chemins de commande doivent être absolus ! Puis appelez
sudo -u user2 /home/user2/bin/test.sh
depuis unuser1
shell. Terminé.la source
essayez de courir:
Cela exécutera la commande en tant que nom d'utilisateur étant donné que vous avez les autorisations sur sudo en tant qu'utilisateur.
la source
sudo su -c "Your command right here" -s /bin/sh otheruser
su username -c "command"
.screen
tant qu'un autre utilisateur, cela pourrait être utile - linuxquestions.org/questions/linux-software-2username
(ou dans la question,user2
) a un mot de passe lui-même, cela ne permettra pas d'ignorer l'invite. l'autre réponse fait: aucun mot de passe nécessaire, à la fois utilisateur1 et utilisateur2.La commande ci-dessus est correcte, mais sur Red Hat, si selinux 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
J'ai dû installer setroubleshoot et setools et exécuter ce qui suit pour l'autoriser:
la source