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

avec Java Discussion :

User utiliser par java sur Linux


Sujet :

avec Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut User utiliser par java sur Linux
    Bonjour,

    Je lance des commandes sur mon serveur Linux depuis mon appli java, je rencontre des problèmes de droits, et j'aimerais donc connaître l'utilisateur qui lance ces process.

    En java, j'utilise les classes Runtime et Process.

    Je suis sur une architecture jetty, jax-rs. Mon process jetty est lancé avec l'utilisateur root.

    Avez-vous une idée ?

    Merci

    Vince

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Si je me souviens bien , le process est lancé avec le même utilisateur celui du process parent, donc je dirais root en l'occurence.
    Pourrais tu nous montrer la commande utilisée succintement, est-ce du genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Runtime runtime = Runtime.getRuntime();
    String[] args = { "/bin/sh", "-c", "ls / >fichier.txt" };
    final Process process = runtime.exec(args);
    Est-ce que tu as une exception dans le flux d'erreur ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    Je te conseille de voir ce que ressort la méthode System.getenv() ou System.getProporties()

    Regarde ce côté dans la classe System du jdk.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    Bonjour,
    J'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec("appel de mon script qui génère un fichier");
    process.destroy();
    Je dispose d'un "try / Catch" autour de cette commande qui ne me sort pas d'exception, mais mon fichier ne se génère pas.

    Si je lance la même commande sur mon terminal, ça fonctionne, ce pourquoi je pense qu'il s'agit d'un problème de droit

    Merci

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    En consommant le flux d'erreur, tu aurais plus de détails.
    Tu as un excellent tuto là dessus dans le paragraphe III-B de ce document:

    http://ydisanto.developpez.com/tutor.../runtime-exec/

    Ou encore l'excellent billet d'adiGuba

    http://blog.developpez.com/adiguba/p...es_plus_simple

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    bonjour,

    Je viens de tester la consommation de flux du blog suivant

    http://ydisanto.developpez.com/tutor.../runtime-exec/

    J'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.io.IOException : Stream closed
    La ligne est question est la suivante pour la consommation de la sortie d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while((line = reader.readLine()) != null) {
    Auriez-vous une explication ?

    Merci

    Vince

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par vince29 Voir le message
    Je lance des commandes sur mon serveur Linux depuis mon appli java, je rencontre des problèmes de droits, et j'aimerais donc connaître l'utilisateur qui lance ces process.
    Le même que celui qui a lancé java, donc le même que jetty
    En java, j'utilise les classes Runtime et Process.
    ok, ce sont les bonne commandes, de quel problème de droit tu parle, tu fais face à quoi?
    Je suis sur une architecture jetty, jax-rs. Mon process jetty est lancé avec l'utilisateur root.
    Tu es sur que jetty tourne en tant que root? Bien qu'il soit normal que root fasse un truc de genre service jetty start, il est peux courant et certainement pas recommandé de faire tourner un serveur J2EE en root, c'est comme apache ou tout autre service, faut lui faire un user dédiée pour éviter la catastrophe.

    Pour être certains de l'utilisateur, tu peux afficher le contenu de System.getProperty("user.name");Pour ton erreur, c'est simplement que le flux a été fermé. Soit l'application s'est terminée, soit elle a fermé elle même le flux en question (erreur ou stdout, tout dépend sur quoi est branché ton reader).

    A mon avis, il y a plus de chance que l'application soit occupée de générer le fichier "ailleurs" que d'avoir un problème de droit. Vérifie aussi le code de sortie de ton application si c'est relevant (via la variable process, après l'arrêt du process).

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    oui je suis sûre qu'il s'agisse bien du user root qui est utilisé.
    et pourtant, je n'ai pas de résultat de ma commande. Le fichier attendu n'est pas créé.

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par vince29 Voir le message
    oui je suis sûre qu'il s'agisse bien du user root qui est utilisé.
    -> dans ce cas faudra regarder à corriger ça

    et pourtant, je n'ai pas de résultat de ma commande. Le fichier attendu n'est pas créé.
    -> Pour le résultat de commande: faudra voir à adapter le script pour qu'il soit plus verbeux
    -> pour le fichier, soit il est créé ailleurs que là où tu cherche (pour ça faut savoir comment ton script est censé créer le fichier) soit l'application se vautre sans prévenir son appelant (dans ce cas faudra corriger le script pour qu'il soit un peu plus explicite en cas de problème).

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2005
    Messages : 489
    Points : 171
    Points
    171
    Par défaut
    J'ai suivi le blog suivant et utilisé la classe Shell afin de récupérer la sortie de mon programme correctement et simplement :

    http://blog.developpez.com/adiguba/p...es_plus_simple

    Le script est bien lancé et rencontre des erreurs, non lié à java, donc je clos ce sujet.

    Merci de votre aide en tout cas.

    Vince

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de kettle sur linux , unix
    Par Rachid24 dans le forum kettle/PDI
    Réponses: 0
    Dernier message: 09/02/2009, 17h12
  2. [JAVA] lancement API java sur linux
    Par untipy dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 15/04/2007, 07h47
  3. Réponses: 4
    Dernier message: 03/01/2007, 21h56
  4. Installation de java sur linux
    Par liljava dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 07/03/2006, 17h48
  5. [installation]un EDI java sur linux
    Par jamesleouf dans le forum EDI et Outils pour Java
    Réponses: 40
    Dernier message: 12/09/2005, 15h11

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