Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 02/07/2008, 11h02   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 12
Points : 2
Points : 2
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 ?
tom__63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 16h37   #2
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
les commandes de ton script sont en chemin relatif ou absolu ?
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2008, 09h27   #3
Invité de passage
 
Inscription : octobre 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 12
Points : 2
Points : 2
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.
tom__63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2008, 11h33   #4
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
- Dans tes users SUDO as-tu bien ajouté le user apache ?
- ESsayes-tu d'écrire dans des dossiers ?
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 09h43   #5
Invité de passage
 
Inscription : octobre 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 12
Points : 2
Points : 2
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)
tom__63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 09h59   #6
Invité de passage
 
Inscription : octobre 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 12
Points : 2
Points : 2
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é...
tom__63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 12h51   #7
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
A mon avis SUDO etait la bonne solution, donner le droit au user apache d'executer juste ce script en tant que root.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 15h50   #8
Invité de passage
 
Inscription : octobre 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 12
Points : 2
Points : 2
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)
tom__63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 16h21   #9
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
Oui tu peux passer par htaccess, non ca n'ajoute absolument pas de difficulté pour la création de compte...en ligne.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/07/2008, 16h29   #10
Invité de passage
 
Inscription : octobre 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 12
Points : 2
Points : 2
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
tom__63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 11h52   #11
Invité de passage
 
Inscription : octobre 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 12
Points : 2
Points : 2
autentification avec fichiers .htaccess en liaison avec ma base mysql fonctionne niquel!
merci
tom__63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h43.


 
 
 
 
Partenaires

Hébergement Web