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 :

Servet lance script bash avec droits insuffisants


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 33
    Par défaut Servet lance script bash avec droits insuffisants
    Bonjour,

    Je modifie une application qui a recours à des servets (tomcat+postgresql sous ubuntu) qui vont lancer un script bash (200 lignes) dont certaines instructions refusent de s'exécuter car elles n'ont pas les droits suffisants, par exemple cette commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    command="soxi ${audioFile}  -D 2>&1"
     
    eval "auduration=${command}"
    a pour resultat (log)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /home/teto/workspace/cml/etc/shell/redemo.sh: line 150: /home/teto/workspace/cml/etc/redemo/data/5757575/5757575_5775/TEST3/5757575_5775_TEST3.wav: Permission non accordée
    Executing command 'soxi /home/teto/workspace/cml/etc/redemo/data/5757575/5757575_5775/TEST3/5757575_5775_TEST3.wav  -D 2>&1'
    Comment résoudre ces pb de droits pour que le script bash ait le droit d'exécuter des instructions sur les fichiers uploadés (je suis tjrs en local) par l'utilisateur svp ?
    Faut-il que je déplace le dossier d'upload ? où ?

    Par avance merci

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    le script bash va être exécuté avec les même droits que ton serveur d'application. Donc en général ça ne pose pas de problème.

    Ton message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/teto/workspace/cml/etc/redemo/data/5757575/5757575_5775/TEST3/5757575_5775_TEST3.wav: Permission non accordée
    semble plutot indiquer que tu as tenté d'exécuter le fichier.

    Pourrais-t-on voir une partie du script avec les numéros de ligne?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 33
    Par défaut
    En fait tu as raison c'est exactement ca. J'ai un peu de mal avec bash mais en transformant ma commande comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    command="soxi ${audioFile}  -D 2>&1"
    eval "auduration=\$(${command})"
    Ca marche.

    Encore merci pr ta précieuse aide

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    autre option plus lisible:

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    auduration=`soxi ${audioFile}  -D 2>&1`

    Les quotes simples inversées permettent de récupérer (par exemple dans une variable ici) le stdout d'une commande. Exemple: avoir tous le listing d'un répertoire
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    Repertoire=`ls -la $folder`

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 33
    Par défaut
    ok ca marche ^^

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

Discussions similaires

  1. Commande grep/sed dans script bash avec regex
    Par 1r2R1 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 02/04/2014, 16h49
  2. Scripts bash avec du SCP
    Par suya95 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 15/01/2013, 14h36
  3. Linux executer un script bash avec php
    Par xunil2003 dans le forum Langage
    Réponses: 0
    Dernier message: 01/07/2012, 11h15
  4. sftp dans un script bash avec .netrc
    Par mehdi_oca dans le forum Linux
    Réponses: 2
    Dernier message: 02/11/2010, 21h42
  5. écrire un script bash avec des paramètres -r, -a
    Par Balbuzard dans le forum Linux
    Réponses: 4
    Dernier message: 17/12/2009, 13h03

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