Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/10/2011, 18h09   #1
Invité de passage
 
Inscription : juin 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 4
Points : 2
Points : 2
Par défaut [script]connexion ssh puis execution d'un script après un sudo

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"
=> le script se connecte bien au serveur distant et exécute test2.sh, jusque ici tout vas bien.

-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 :
1
2
3
4
5
6
7
8
9
#!/usr/bin/ksh
MANPATH=$$$$$$$$
SHELL=$$$$$$$$$$$$
LD_LIBRARY_PATH=$$$$$$$$$$$$$$$$$$
ENV=$$$$$$$$$$$$
PATH=$$$$$$$$$$$$$$
HOME=$$$$$$$$$$$$
export MANPATH SHELL LD_LIBRARY_PATH ENV PATH HOME
sudo su - sudouser ; /monpath/test3.sh
Mon problème :
=>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 !!! ^^
LaMusaraigne est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 04/10/2011, 13h01   #2
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Code :
sudo -u sudouser /monpath/test3.sh
matafan est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 04/10/2011, 13h49   #3
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
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é]
frp31 est actuellement connecté   Envoyer un message privé Réponse avec citation 01
Vieux 04/10/2011, 16h16   #4
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Tu peux développer ? Je ne vois pas ce que le sticky bit à a voir avec ça.
matafan est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 04/10/2011, 17h12   #5
Invité de passage
 
Inscription : juin 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 4
Points : 2
Points : 2
Bonjour et déja merci d'avoir pris le temps de répondre.

Pour matafan :
Code :
sudo -u sudouser /monpath/test3.sh
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:
-------------------------------------------
Sorry, user login is not allowed to execute '/monpath/test3.sh' as sudouser on server.
Connection to server closed.
Vu qu'en effectuant avec ce 'login' un "sudo su - sudouser" je peux par la suite exécuter test3.sh, je ne comprend pas vraiment pourquoi ça bloque avec cette synthaxe. Une idée ?

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 :/
LaMusaraigne est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/10/2011, 09h02   #6
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
Citation:
Envoyé par matafan Voir le message
Tu peux développer ? Je ne vois pas ce que le sticky bit à a voir avec ça.
le stuid-bit pardon en effet ...
frp31 est actuellement connecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/10/2011, 10h50   #7
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Un script ne peut pas être set-uid.
matafan est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/10/2011, 10h57   #8
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Citation:
Envoyé par LaMusaraigne Voir le message
Bonjour et déja merci d'avoir pris le temps de répondre.

Pour matafan :
Code :
sudo -u sudouser /monpath/test3.sh
j'ai déja essayé cette synthaxe mais je me ne savais pas si elle était bonne, vu qu'elle me retournait une erreur :
Il faut que tu édites ton /etc/sudoers pour permettre à ton utilisateur de lancer de commandes en tant que sudouser.
Citation:
Envoyé par LaMusaraigne Voir le message
Vu qu'en effectuant avec ce 'login' un "sudo su - sudouser" je peux par la suite exécuter test3.sh, je ne comprend pas vraiment pourquoi ça bloque avec cette synthaxe. Une idée ?
C'est parfaitement normal. "sudo su -" lance un nouveau shell, donc ton script attend que ce shell termine avant de passer à la commande suivante. C'est comme si tu faisais ça :
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é.
matafan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 11h24   #9
Invité de passage
 
Inscription : juin 2005
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 4
Points : 2
Points : 2
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 ^^
LaMusaraigne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 13h13   #10
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
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 :
Code :
%sudo ALL=NOPASSWD: ALL
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 "=" :
Code :
%sudo ALL=(ALL) NOPASSWD: ALL
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
matafan est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/10/2011, 13h57   #11
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 451
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 451
Points : 2 151
Points : 2 151
Sinon, sans passer par sudo tu peux pas ?
Code :
su sudouser -c "/bin/sh /monpath/test3.sh"
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/10/2011, 14h17   #12
Membre Expert
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2008
Messages : 1 375
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : octobre 2008
Messages : 1 375
Points : 2 034
Points : 2 034
Dans ce cas il faut taper le mot de passe.
matafan est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/10/2011, 15h37   #13
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
Citation:
Envoyé par matafan Voir le message
Un script ne peut pas être set-uid.
c'est pas au niveau du script mais du binaire appelé qu'il faut le faire
frp31 est actuellement connecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h24.


 
 
 
 
Partenaires

Hébergement Web