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

Langage PHP Discussion :

[Système] exécution de script shell dans une page php


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut [Système] exécution de script shell dans une page php
    Bonjour,
    J'ai parcouru pas mal de forums, mais je n'arrive toujours pas à réaliser ce que je souhaite...
    Bref j'ai un gros script php qui effectue plein de scripts shells et expects (pour des connexions ssh).
    Ce script tourne sans soucis, mais lorsque je l'intègre dans une page PHP, cela ne marche plus.
    J'ai cru comprendre que ct parsqu'il était executé par apache et non plus par root.
    J'ai essayé de faire un chmod u+s monscript afin de donner les droits du propritaire a son executant, sans succès.
    J'ai essayé également de lancer les script shell via exec( "SUDO monscript.sh"); sans succès également.
    J'ai testé aussi les autres fonction include() sh_exec() sans succès.

    Le safe_mode est désactivé dans httpd.conf.
    Et mon fichier error_log m'indique aucune erreurs, si ce n'est:
    ...
    Password:
    Password:
    Password:
    Password:
    Password:
    Password:
    Password:
    Password:
    Password:
    [client *.*.*.*] PHP Warning: fread(): Length parameter must be greater than 0. in /tmp/script.php on line 174, referer: http://*.*.*.*/index.php?page=mapage
    Password:

    Est ce que quelqu'un pourrai m'aider à avancer ?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    les commandes de ton script sont en chemin relatif ou absolu ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    les chemins sont en absolus.

    En fait j'ai avancé sur mon problème.
    Il semblerait que php se place toujours dans le dossier courrant.

    En effet si je fais une pwd sur ma page php, elle me retourne /var/www/html.
    Si je fais cd / à l'interieur de cette même page, elle me retourne toujours /var/www/html.

    Bref j'arrive appeller mon script php (qui se trouve pour l'instant dans /tmp)depuis ma page via le chemin ../../../tmp/script.php (oui c laborieux...)
    celui-ci se lance mais n'arrive pas à lancer les script shell.

    Le fichier error_log d'apache m'indique pour chaque script, permission denied.
    Cependant tous ces scripts sont en 777.
    Je pense qu'il faudrait que je donne à apache les mêmes droits que root, mais je ne sais pas comment faire.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    - Dans tes users SUDO as-tu bien ajouté le user apache ?
    - ESsayes-tu d'écrire dans des dossiers ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    J'ai avancé un peu.
    En fait j'ai installé tous mes scripts dans un repertoire script dans www/html
    Du coup mon apache arrive a y acceder.
    Cependant pour mes connexions ssh, je doit verifier la clé RSA dans le fichier /root/.ssh/known_hosts. Mais vu que ce fichier n'est pas dans l'arborescence /var/www/html, j'arrive a y acceder ainsi: ../../../root/.ssh/known_hosts mais pas à le modifier...

    Comment je pourrais faire pour donner a apache le droit d'acceder (lire + modifier) a ce fichier.

    De meme, étant donné que j'ai maintenant mes scripts dans ../html/script, il me faudrai sécuriser ce dossier: apache doit pvoir y acceder mais, l'arborescence ne doit pas être disponible sur le site web.

    (J'ai abandonné l'option sudo)

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    je pense que donner les droits root à apache ne serait pas du tout judicieux...
    Il me faudrait plutot modifier les droits d'accès d'apache plutot.
    J'ai essayer:

    <Directory "/var/www/html/script">
    Order allow,deny
    allow from 127.0.0.1
    deny from all
    </Directory>

    Dans httpd.conf. Ce qui effectivement block l'accès a l'arborescence mais ce n'est pas exactement ce que je veut...
    En fait je souhaiterai que l'accès soit autorisé pour quelqu'un de loggué...

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    A mon avis SUDO etait la bonne solution, donner le droit au user apache d'executer juste ce script en tant que root.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    effectivement en modifiant le fichier sudoers et en donnant les droits spécifiques a apache le script fonctionne merci !!

    Cependant maintenant j'ai un problème plutôt orienté authentification apache php/mysql.

    Je m'explique dans l'arborescence de mon site il est pour le moment possible, si l'on se place dans le repertoire mon-site/backup/ d'avoir accès a tous les sous dossiers et leurs contenus.
    Hors, j'aimerai que ces contenus ne soient disponible que en cliquant sur un lien href dans ma page php (c'est pour telecharger un fichier) car celle-ci est accessible authentifié via des session (authentification dans une base mysql).

    Donc, comment pourrais-je faire pour ne rendre ces dossiers accessible que via le site et non en tapant directement l'arborescence dans la barre d'adresse?

    Doit passer par un htaccess? (ce qui me semble dificile a utiliser pour quelque chose de dynamique: création/suppression de compte en ligne)

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Oui tu peux passer par htaccess, non ca n'ajoute absolument pas de difficulté pour la création de compte...en ligne.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    ok je vien de voir que apparement c possible de faire une authentification htaccess sur une base mysql et non sur un fichier htpassword.
    Je vais tester ca.
    Thanks

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    autentification avec fichiers .htaccess en liaison avec ma base mysql fonctionne niquel!
    merci

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

Discussions similaires

  1. Intégrer des scripts SHELL dans une page web
    Par abdellah 1 dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 10/05/2010, 16h35
  2. Inclure un script bash dans une page php
    Par kazylax dans le forum Linux
    Réponses: 1
    Dernier message: 27/01/2009, 16h59
  3. [Système] Inclure du code PERL dans une page php ?
    Par Munkey74 dans le forum Langage
    Réponses: 3
    Dernier message: 31/05/2007, 09h18
  4. Appeller un script shell dans une page html
    Par Scurz dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 04/05/2007, 14h50
  5. [Système] Executer un script CGI dans une page php
    Par RadicalBob dans le forum Langage
    Réponses: 1
    Dernier message: 25/04/2007, 17h46

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