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

Linux Discussion :

introduire le mot de passe root dans un code JAVA


Sujet :

Linux

  1. #1
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut introduire le mot de passe root dans un code JAVA
    Salut à tous,

    J'ai une classe java, dans lequel j'exécute une instruction qui me permet d'écrire des commandes dans l'invite de commande ... le problème içi, c'est que je veut les exécuter comme en mode root ...

    Voiçi le code :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    String[] cmd = { "/bin/sh", "-c","euca-add-keypair '"+Keyname_Fld.getText()+"' > '"+Keyname_Fld.getText()+"'.priv" };
                Process p = Runtime.getRuntime().exec(cmd);
     
                BufferedReader stdInput = new BufferedReader(new
                     InputStreamReader(p.getInputStream()));
     
                System.out.println("Here is the standard output of the command:\n");
                while ((s = stdInput.readLine()) != null) {
                    System.out.println(s);
                }

    ça marche pour le moment mais je veut le faire en tant que root, je ne sais pas comment faire pour introduire le mot de passe du compte root dans l'instruction!

    Merci pour votre aide !

  2. #2
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    Je voulais juste spécifier que je cherche une commande du genre RUNAS dans windows ... Je me demandes si cette commande marche aussi pour Linux !

  3. #3
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut
    tu peux créer un script .sh que t'exécute, il te permet de te connecter en mode root puis de lancer ta commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/expect -f
     
    set force_conservative 1;
     
    spawn su -
    expect "password:\r"
    send -- "xxxxxxx\r"
    expect "$"
    send -- "cmd\r"
    a editer

    Sinon pour le runtime, ca pourrait bloquer parfois..je te conseille d'utiliser la librairie Shell

  4. #4
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    Merci pour votre réponse... mais pourriez vous m'expliquer de plus l'alternative de la librairie Shell !

    Sinon autre suggestions?

  5. #5
    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 L'aigle de Carthage Voir le message
    Salut à tous,

    J'ai une classe java, dans lequel j'exécute une instruction qui me permet d'écrire des commandes dans l'invite de commande ... le problème içi, c'est que je veut les exécuter comme en mode root ...

    Voiçi le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    String[] cmd = { "/bin/sh", "-c","euca-add-keypair '"+Keyname_Fld.getText()+"' > '"+Keyname_Fld.getText()+"'.priv" };
                Process p = Runtime.getRuntime().exec(cmd);
     
                BufferedReader stdInput = new BufferedReader(new
                     InputStreamReader(p.getInputStream()));
     
                System.out.println("Here is the standard output of the command:\n");
                while ((s = stdInput.readLine()) != null) {
                    System.out.println(s);
                }
    ça marche pour le moment mais je veut le faire en tant que root, je ne sais pas comment faire pour introduire le mot de passe du compte root dans l'instruction!

    Merci pour votre aide !
    insérer un password dans un code est une connerie conceptuellement
    à la limite créer un installeur à lancer sous root 1 seule fois, pour l'application, qui créer les entrées sudo nécessaires c'est déjà crade... mais c'est quand même bien moins pire.

    et surtout si le password root change, l'application fonctionnera toujours !!!!!!

  6. #6
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    J'ai fait le script(scriptroot.sh) et j'ai essayé de l'exécuter mais j'ai eu cette erreur:

    bash: /home/user/scriptroot.sh : /usr/bin/expect : mauvais interpréteur: Aucun fichier ou dossier de ce type

    Que dois-je faire?

  7. #7
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    J'ai réussi à règler le problème précédent, mais cette fois j'ai ce message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    readlink: opérande manquante
    Pour en savoir davantage, faites: « readlink --help ».
    dirname: opérande manquante
    Pour en savoir davantage, faites: « dirname --help ».
    voiçi ma ligne de code complète:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] cmd = { "/bin/sh", "-c","cd /home/user; /home/user/eucarc; euca-add-keypair '"+Keyname_Fld.getText()+"' > '"+Keyname_Fld.getText()+"'.priv" };
    Avez vous une idée comment règler ça?

  8. #8
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 123
    Points
    28 123
    Par défaut
    STOP !!!

    sudo (super user do) est l'outil qu'il te faut. Oublie le fait de mettre le mot de passe dans ton code, et oublie le script expect qui passe le mot de passe en clair.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String[] cmd = { "/bin/sh", "-c","cd /home/user; sudo /home/user/eucarc; euca-add-keypair '"+Keyname_Fld.getText()+"' > '"+Keyname_Fld.getText()+"'.priv" };
    Bien sur, il faut au prealable avoir configure sudo pour autoriser l'utilisateur X a executer la commande /home/user/eucarc, sans demander le mot de passe de l'utilisateur.

  9. #9
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    Bien sur, il faut au prealable avoir configure sudo pour autoriser l'utilisateur X a executer la commande /home/user/eucarc, sans demander le mot de passe de l'utilisateur.
    D'accord, mais si j'ai bien compris, vous voulez dire: Donner les privilèges pour le fichier eucarc?

    C'est ça votre idée?

  10. #10
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] cmd = { "/bin/sh", "-c","EUCA_KEY_DIR=$(dirname $(readlink -f ${BASH_SOURCE}))" };
    J'ai exploré le fichier euarc, et j'ai trouvé qu'il contient un ensemble d'instructions d'export ... mais le problème provient de la ligne çi-dessus.... Avec le message d'erreur qu'il m'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     readlink: opérande manquante
    Pour en savoir davantage, faites: « readlink --help ».
    dirname: opérande manquante
    Pour en savoir davantage, faites: « dirname --help ».
    Je me suis dis pourquoi pas remplacer les deux variables dirname et readlink par leurs valeurs, mais j'ai pas su quoi mettre ni quoi faire

    Avez vous des suggestions? Merci

Discussions similaires

  1. [XL-2010] Cacher mot de passe présent dans mon code
    Par Surinox dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/06/2015, 15h51
  2. Exécuter une instruction de root dans un code JAVA
    Par L'aigle de Carthage dans le forum Linux
    Réponses: 16
    Dernier message: 17/10/2011, 09h07
  3. introduire un mot de passe dans la ligne de code VBA
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/07/2009, 17h56
  4. récuperation de mot de passe crypté dans un code vbs
    Par tese84 dans le forum VBScript
    Réponses: 5
    Dernier message: 20/07/2009, 08h13
  5. mot de passe root dans application
    Par KalKul dans le forum Linux
    Réponses: 7
    Dernier message: 05/05/2007, 09h25

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