|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : juin 2005 Messages : 4 ![]() |
Bonjour à tous,
Je cherche un coup de main pour me dire si ce que je fais est débile, ou si il y a plus simple / ou une solution genre une option d'une commande à la mort moi le neuneu ect ... J'essaye actuellement d'écrire un script et je galère un peu. Ci dessous la description de ce que j'ai fait : -Mon premier script test1.sh se connecte en ssh sur un serveur distant pour exécuter un script situé sur ce serveur distant. Contenu du script, seulement cette ligne : Code :
/usr/bin/ssh -t login@serveur "/titi/toto/test2.sh" -Mon script test2.sh set les variables d'env (qui sont reset a chaque connexion ssh), puis effectue un sudo pour changer de user, et enfin lance un autre script en local : Code :
=>Je lance mon script test1.sh depuis un putty, et putty me rend la main juste après le sudo du script test2.sh sur le serveur distant. => les variables d'env ont étés correctement settées (je les retrouves avec la commande "env") => j'ai ma connexion qui est ouverte avec le bon sudouser, sur le serveur distant sous putty MAIS le script test3.sh ne s'est pas lancé ... En fait si ensuite je quitte mon sudo a la main dans putty par la suite (avec un exit), le script test3.sh se lance automatiquement (donc en gros test2.sh attend la fermeture du sudo avant d’exécuter la suite :/) Donc si vous avez eu le courage de tout lire sans décrocher, et que vous savez comment forcer l’exécution du script test3.sh sous le sudo ça m'aiderai bien ![]() PS : Je suis pas vraiment expert du sh / ksh ect même si je travail dessus tous les jours et que ce n'est pas mon premier script (google est pas mal mon amis), mais la je bloque bien sur ce petit truc de merde !!! ^^ |
||
|
|
01
|
|
|
#2 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
|
|
|
01
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 538 ![]() |
c'est domage de faire comme ça...
si un droit spécifique doit être mis c'est pas un sudo qu'il faut faire mieux vaut chercher du coté des droits avancées pour donner le droit d'exécution concerné. par exemple avec le setuid-bit [corrigé] |
|
|
01
|
|
|
#4 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
Tu peux développer ? Je ne vois pas ce que le sticky bit à a voir avec ça.
|
|
|
01
|
|
|
#5 | |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 4 ![]() |
Bonjour et déja merci d'avoir pris le temps de répondre.
Pour matafan : j'ai déja essayé cette synthaxe mais je me ne savais pas si elle était bonne, vu qu'elle me retournait une erreur : Citation:
Sinon pour frp31 : Disons que je n'ai pas vraiment la main sur l'archi des serveurs. En gros on a 1 user 'login' (pas root, droits limités) qui me permet de me connecter a tous nos serveurs (humm une petite 50aine je dirais) et sur chaque serveur on a des serveurs d'appli (weblo, tomcat,php ect) installées chacun via un compte sudo différent. Du coup je peux pas bidouiller les droits des comptes, obligé de passé par un sudo pour lancer mes scripts :/ |
|
|
|
10
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 538 ![]() |
Citation:
|
|
|
|
01
|
|
|
#7 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
Un script ne peut pas être set-uid.
|
|
|
01
|
|
|
#8 | ||
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
Citation:
Citation:
Le script affichera 1 puis lancera un nouveau shell. Quand tu fermes ce nouveau shell, l'exécution du script reprend et un 2 est affiché. C'est exactement pareil avec sudo. Pour faire exécuter une commande à sudo, il faut passer la commande en argument à sudo comme je l'ai indiqué. |
||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : juin 2005 Messages : 4 ![]() |
Merci matafan pour ta réponse ça m'évitera de continuer a chercher pour rien du coup
![]() Si je résume : le fait d’être capable d'ouvrir un nouveau shell via un "sudo su" avec un certain user ne veut pas forcément dire que ce user à les droits pour éxécuter un script via ce sudouser, sauf si on le paramètre dans le /etc/sudousers. C'est un peu tordu mais pourquoi pas ^^ |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
Quand tu fais "sudo su - sudouser", tout ce que fait sudo c'est exécuter la commande "su - sudouser" en tant que root. Ensuite c'est la commande su qui te fais passer sudouser, sans mot de passe puisque tu es déjà root.
Par contre quand tu fais "sudo -u sudouser command", sudo essaie d'exécuter la commande en tant que sudouser. Donc chez toi /etc/sudoers permet à ton user d'exécuter une commande en tant que root, mais pas en tant q'un autre user. Ce qui s'explique probablement par le fait que tu as la ligne suivante : Si tu veux pouvoir exécuter une commande en tant que n'importe quel utilisateur, et pas seulement root, il faut ajouter "(ALL) " après le "=" : Ce qui n'est d'ailleurs pas forcément une bonne idée puisqu'il vaut généralement mieux être un peu plus spécifique. Par exemple si tu veux que "user" puisse exécuter "/monpath/test3.sh" en tant que "sudouser", tu peux essayer : Code :
user ALL=(sudouser) NOPASSWD: /monpath/test3.sh |
|
|
01
|
|
|
#11 |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 451 ![]() |
Sinon, sans passer par sudo tu peux pas ?
Code :
su sudouser -c "/bin/sh /monpath/test3.sh" |
|
|
01
|
|
|
#12 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
Dans ce cas il faut taper le mot de passe.
|
|
|
01
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 538 ![]() |
c'est pas au niveau du script mais du binaire appelé qu'il faut le faire
|
|
|
01
|
Copyright © 2000-2012 - www.developpez.com