Exécuter le script en tant qu'autre utilisateur sur Linux
Je suis en train de créer un terminal Linux menu par un simple script. Dans le script il y aura quelques commandes qui seront présenter un travail (un script shell par exemple) tant qu'un autre utilisateur sans mot de passe.
J'ai été en mesure de trouver le post suivant, et cela a fonctionné. comment faire pour exécuter le script d'un autre utilisateur sans mot de passe
Cependant, il y avait un effet secondaire. Il semble que l'utilisateur peut exécuter d'autres scripts dans le dossier de l'utilisateur que je ne veux pas.
Des suggestions/aide bienvenue.
Pour le bien de cette. Voici ce que j'ai:
-
Nom d'utilisateur
temp1
, qui est l'utilisateur qui fait tourner le menu.
uid=1001(temp1), gid=1001(temp1), les groupes=1001(temp1) -
Nom d'utilisateur
wayne
, qui est à l'utilisateur que le script doit être soumis à exécuter le travail
uid=1000(wayne), gid=1000(wayne),groups=1000(wayne),4(adm),24(cd-rom),27(sudo),30(dip)... -
Script
script1.sh
,script2.sh
détenue parwayne
.-rwxr-xr-x script1.sh -rwxr-xr-x script2.sh
-
Si j'essaie d'aller à
/home/wayne
commetemp1
utilisateur-je obtenir la permission refusée (prévu) -
J'ai mis les scripts de faire un chmod 700 pour
wayne
. Donc, techniquement, on ne peut exécuter qu'wayne
. -
J'ai édité sudo fichier et l'entrée suivante:
temp1 ALL(wayne) NOPASSWD: /home/wayne/script1.sh
-
Quand je lance la commande
su -c "/home/wayne/script1.sh" -s /bin/sh wayne
l'exécution du script (comme prévu) -
Quand je lance la commande
su -c "/home/wayne/script2.sh" -s /bin/sh wayne
l'exécution du script (pas prévu).
Des idées?
- Une différence entre votre examplar question et votre question est que l'autre question utilise
user1 ALL=(user2) NOPASSWD: /home/user2/bin/test.sh
mais vous omettez le=
dans votre version. Que peut-être tout ce qui est mauvais; il pourrait être innocent. Il vaut la peine de vérifier. - J'ai fait en sorte qu'il avait l'égale et encore obtenu les mêmes résultats. La sortie est détenue par wayne donc je connais son fonctionnement correct de script.
- Aucune aide n'importe qui?
Vous devez vous connecter pour publier un commentaire.
La réponse est le changement de la ligue de sudo.
su est principalement pour la commutation des utilisateurs, tout en sudo pour exécuter des commandes comme d'autres utilisateurs. Le -u permet de spécifier quel utilisateur d'exécuter une commande en tant que:
sudo -u wayne/home/wayne/script2.sh " donne Désolé de l'utilisateur n'est pas autorisé à exécuter