Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
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 27/04/2011, 15h15   #1
Débutant
 
Inscription : mai 2006
Messages : 529
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 529
Points : 61
Points : 61
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 :
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 !
L'aigle de Carthage est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/04/2011, 16h47   #2
Débutant
 
Inscription : mai 2006
Messages : 529
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 529
Points : 61
Points : 61
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 !
L'aigle de Carthage est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/04/2011, 23h11   #3
Membre chevronné
 
Inscription : août 2010
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 416
Points : 732
Points : 732
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 :
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
marouene_ est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/04/2011, 10h50   #4
Débutant
 
Inscription : mai 2006
Messages : 529
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 529
Points : 61
Points : 61
Merci pour votre réponse... mais pourriez vous m'expliquer de plus l'alternative de la librairie Shell !

Sinon autre suggestions?
L'aigle de Carthage est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/04/2011, 11h03   #5
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
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 534
Points : 7 743
Points : 7 743
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 :
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 !!!!!!
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 11h34   #6
Débutant
 
Inscription : mai 2006
Messages : 529
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 529
Points : 61
Points : 61
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?
L'aigle de Carthage est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/04/2011, 11h58   #7
Débutant
 
Inscription : mai 2006
Messages : 529
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 529
Points : 61
Points : 61
J'ai réussi à règler le problème précédent, mais cette fois j'ai ce message d'erreur:

Code :
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 :
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?
L'aigle de Carthage est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/04/2011, 14h25   #8
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 464
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 464
Points : 9 585
Points : 9 585
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 :
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.
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 29/04/2011, 16h08   #9
Débutant
 
Inscription : mai 2006
Messages : 529
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 529
Points : 61
Points : 61
Citation:
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?
L'aigle de Carthage est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 06/05/2011, 12h32   #10
Débutant
 
Inscription : mai 2006
Messages : 529
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 529
Points : 61
Points : 61
Code :
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 :
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
L'aigle de Carthage est déconnecté   Envoyer un message privé Réponse avec citation 11
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h17.


 
 
 
 
Partenaires

Hébergement Web