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

Servlets/JSP Java Discussion :

[JSP] Lancement d'un shell


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Points : 40
    Points
    40
    Par défaut [JSP] Lancement d'un shell
    Bonjour,
    Je reviens sur un pb de la semaine dernière.
    Je veux arréter un serveur a partir d'une JSP.
    Je lance une commande avec Runtime.exec mais j'ai un message d'erreur, sur la recherche d'un fichier dans programme shell lancé.
    Je précise que en root et en ligne de commande cela fonctionne et que j'arrive bien à effectuer un 'ls-la" via ma JSP.
    Donc est ce un probleme de droits sur le fichier pid? sur le programme? que dois je faire?

    Voici le shell que j'essaye de lancer, et le code retour que j'obtiens (******) 'No ns-slapd PID file found. Server is probably not'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    PIDFILE=/logs/pid
    PIDRECOVERFILE=$PIDFILE.recover
    PIDSTARTINGFILE=$PIDFILE.starting
    if [ -f $PIDFILE ]
    then
      PID=`cat $PIDFILE 2> /dev/null`
    else
      if [ -f $PIDRECOVERFILE ]
      then
        PID=`cat $PIDRECOVERFILE 2> /dev/null`
      else
        if [ -f $PIDSTARTINGFILE ]
        then
          PID=`cat $PIDSTARTINGFILE 2> /dev/null`
        else
          echo No ns-slapd PID file found. Server is probably not running(******)
          exit 2
        fi
      fi
    fi

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 862
    Points : 4 835
    Points
    4 835
    Par défaut
    Salut

    A mon avis, tu devrais essayer d'ajouter sudo (man sudo ). Cela te permettrait d'être l'utilisateur Web avec le droit de lancer ton script avec momentanément les droits root.

    @++

  3. #3
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Essaie de créer un fichier depuis ta JSP. Ainsi tu récupères le nom de l'utilisateur et le nom du groupe auquel appartient ton processus gérant
    ton WEB-Conteneur (TOMCAT).

    Ta commande unix "ls -la" te permettra de lire cette information .

    Ensuite à toi de savoir pourquoi cet utilisateur ne peut éxecuter ta commande.

  4. #4
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Points : 40
    Points
    40
    Par défaut
    Merci!
    je vais essayer de prendre en compte vos remarque.
    j'ai essaye d'utiliser la commande su avant de lancer mon script, sans succes.

  5. #5
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 862
    Points : 4 835
    Points
    4 835
    Par défaut
    Pas su, sudo !

  6. #6
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Points : 40
    Points
    40
    Par défaut
    je n'y arrive pas avec sudo,
    je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String[] cmd = {"sudo", "/bin/sh" ,"/stop-slapd"};
     
    Process proc1 = Runtime.getRuntime().exec(cmd);
    Mais j'ai un timeout, je ne sais pas trop quoi faire maintenant.
    Je ne suis peut etre pas tres loin, mais il doit me manquer quelque chose

  7. #7
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Dans mon environnement (Solaris) avant que sudo éxecute la commande, il demande le mot de passe.

    Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] cmd = {"sudo", "-S", "/bin/sh /stop-slapd"};

    De cette manière 'sudo' lit le mot de passe depuis l'entrée standard au lieu de la console. Il ne te reste plus que de trouver le mot passe de l'utilisateur TOMCAT et de le passer à 'sudo'.

    Un peu compliqué, je trouve. Comme disait Evelyne, "C'est ton choix"

  8. #8
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Points : 40
    Points
    40
    Par défaut
    je connais le mot de passe root
    est-ce que je ne peux pas faire un sudo -u root -S motdepasse /stop-slapd?

  9. #9
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 102
    Points
    102
    Par défaut
    Pourquoi ne pas faire un script shell avec le suid fixé et user root, tu le places dans un repertoire accessible uniquement à ton serveur (surtout le droit d'execution que pour lui notamment).
    Ça pour la solution facile, on va dire et pas très secure.

    La deuxieme, lire le man de sudo et ajouter une ligne sans request de pass pour une commande particulière. (cf idée de GLDavid) qui sera bien plus secure

  10. #10
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Non, tu ne peux pas passer le mot de passe comme argument.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo -u root -S /stop-slapd
    Ensuite ton programme doit fournir le mot de passe via l'entrée standard au sous-processus créé.

  11. #11
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Points : 40
    Points
    40
    Par défaut
    Toujours un time out avec

    String[] cmd = {"sudo", "-u", "root", "-S", "/stop-slapd"};


    Process proc1 = Runtime.getRuntime().exec(cmd);
    PrintStream printStream_l = new PrintStream(proc1.getOutputStream());
    printStream_l.println("motdepasse");
    printStream_l.flush();
    int i = proc1.waitFor();

  12. #12
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Points : 40
    Points
    40
    Par défaut
    J'ai essaye de me mettre sur un compte user et de faire la commande il me demande en effet un mot de passe, mais lorque je rentre le mot de passe root, il me jette alors que c'est le bon puisque je me connecte avec celui ci?
    Peut etre cela vient de la maintenant?!

  13. #13
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Points : 40
    Points
    40
    Par défaut
    Personne n'a plus aucune idee?

  14. #14
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Attention as-tu le droit d'utiliser /stop-slapd avec sudo?

  15. #15
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 139
    Points : 40
    Points
    40
    Par défaut
    j'arrive a le lancer en root et en ligne de commande
    Des que je veux le faire un compte user en passant par root, cela ne fonctionne pas, il me demande le mot de passe, qui n'est pas reconnu, comme si ce n'etait pas le mot de passe root qu'il demande.

  16. #16
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Il ne demande le mot de passe du root mais celui de l'utilisateur.
    En plus l'admin doit autorier l'utilisateur à utiliser la commande.

    Pour plus d'info, lis le man de sudo...

Discussions similaires

  1. [Makefile] Problème lancement Makefile dans Shell
    Par domiq44 dans le forum Systèmes de compilation
    Réponses: 14
    Dernier message: 29/11/2006, 15h17
  2. Lancement d'un shell depuis un systeme windows
    Par kimlee dans le forum Administration système
    Réponses: 5
    Dernier message: 14/11/2006, 17h21
  3. Lancement d'un shell Unix dans un proc stockée
    Par Titouf dans le forum Oracle
    Réponses: 1
    Dernier message: 17/10/2006, 11h55
  4. Lancement d'un shell Unix dans un proc stockée
    Par SBA03 dans le forum Oracle
    Réponses: 20
    Dernier message: 31/08/2006, 09h22
  5. Etude de cas : lancement d'un shell par web
    Par Loko dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 09/06/2006, 16h53

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