IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

[script]connexion ssh puis execution d'un script après un sudo


Sujet :

Shell et commandes POSIX

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 4
    Points : 5
    Points
    5
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    /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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !!! ^^

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo -u sudouser /monpath/test3.sh

  3. #3
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    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é]

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Tu peux développer ? Je ne vois pas ce que le sticky bit à a voir avec ça.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour et déja merci d'avoir pris le temps de répondre.

    Pour matafan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

    -------------------------------------------
    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 :/

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    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 ...

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Un script ne peut pas être set-uid.

  8. #8
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Citation Envoyé par LaMusaraigne Voir le message
    Bonjour et déja merci d'avoir pris le temps de répondre.

    Pour matafan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    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 ^^

  10. #10
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    %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 : Sélectionner tout - Visualiser dans une fenêtre à part
    %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 : Sélectionner tout - Visualiser dans une fenêtre à part
    user ALL=(sudouser) NOPASSWD: /monpath/test3.sh

  11. #11
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 847
    Points
    4 847
    Par défaut
    Sinon, sans passer par sudo tu peux pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    su sudouser -c "/bin/sh /monpath/test3.sh"

  12. #12
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Dans ce cas il faut taper le mot de passe.

  13. #13
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    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

Discussions similaires

  1. Script de backup (connexion ssh + stockage)
    Par Scalp4 dans le forum Linux
    Réponses: 6
    Dernier message: 30/09/2011, 10h49
  2. Réponses: 2
    Dernier message: 20/07/2011, 11h09
  3. Réponses: 1
    Dernier message: 10/06/2009, 13h02
  4. connexion ssh dans un script ksh
    Par don'de dans le forum Linux
    Réponses: 4
    Dernier message: 21/01/2008, 10h50
  5. script munin via double connexion ssh
    Par twistope dans le forum Administration système
    Réponses: 1
    Dernier message: 16/01/2008, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo