Acces partage par Apache

Questions sur le développement PHP.

Modérateur : Modérateurs

freetomfr69
Nouveau membre
Messages : 6
Inscription : lun. 02 juin 2008, 16:48

Acces partage par Apache

Messagepar freetomfr69 » lun. 02 juin 2008, 17:25

Salut tous le monde,

je suis en ce moment sur un projet d'intranet pour afficher une petite fenetre de bienvenue à mes utilisateurs avec entre autre la taille de leur dossier perso.

Ce dossier perso se situe sur un serveur de fichier windows 2003 et les répertoire utilisateurs sont du type \\serveur\Utilisateurs\nom d utilisateur\.

J'ai donc monté le partage samba correspondant dans /mnt/mail.

Ensuite j'ai tous essayé pour affiché la taille d'un dossier d'un utilisateur sans succès. La commande php que je veux éxécuter sous apache pour l'obtenir est :

Code : Tout sélectionner

shell_exec(du -sb /mnt/mail/nom d utilisateur)


Si je fais un du -sb \\mnt\mail\nom d utilisateur en console en tant que root tous roule. J'ai alors voulu essayé de configurer apache pour s'executer en root pour tester mais c'est pas possible apparement.

J'ai alors créer un utilisateur toto faisant parti du groupe root pour test, et j'ai executer la commande avec cet utilisateur dans la console et ça marche nickel.

Le probleme c'est que une fois sur éxécuter sur apache ça marche pas meme si je lance apache avec l'utilisateur toto.

J'obtiens tous le temps le message d'erreur :

du: cannot access '/mnt/mail/thomas' : permission denied

J'ai alors essayé la méthode du lien symbolique vers mon partage dans le repertoire /var/www/html mais rien n'y fait.

Est ce que quelq'un pourrait m'aider sur ce problème sur lequel je m'arrache les cheveux depuis plusieurs semaines.

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Acces partage par Apache

Messagepar dexmon » mar. 03 juin 2008, 7:58

Bonjour,
ça n'est pas un problème de partage apache mais plutôt de permission...
du -sb est une commande qui doit être exécutée par root, utilise plutôt une fonction propre et non pas un exec() ou un shell_exec().
Récupérer la taille d'un fichier est assez simple avec filesize() mais pour la taille d'un dossier il faut créer une fonction, en voici une qui récupère la taille d'un dossier en Ko.

Code : Tout sélectionner

function sizethis($src)
{
$size=0;
$h = opendir($src);
while (($o = readdir($h)) !== FALSE) 
 {
 if (($o != '.') and ($o != '..'))   
 {
 if (is_dir($src.DIRECTORY_SEPARATOR.$o))
 {
 $size=$size + sizethis($src.DIRECTORY_SEPARATOR.$o);
 }
 else
 {
 $size=$size+filesize($src.DIRECTORY_SEPARATOR.$o);
 }
}
}
 closedir($h);
 return $size;
}
// Le dossier a testé est toto
echo 'La taille du dossier est de ' . round(sizethis("toto")/1024, 2) . ' Ko';


//affiche rien s'il est vide et la taille s'il est plein.
Pour l'avoir en Mo il suffit de faire

Code : Tout sélectionner

 round(sizethis("toto")/1024/1024, 2)


Donc ici pour ton cas ça serait plutôt:

Code : Tout sélectionner

echo 'La taille du dossier est de ' . round(sizethis("/mnt/mail/thomas")/1024, 2) . ' Ko';


Source: http://www.phpscripts-fr.net/portions/p ... php?id=144
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

freetomfr69
Nouveau membre
Messages : 6
Inscription : lun. 02 juin 2008, 16:48

Re: Acces partage par Apache

Messagepar freetomfr69 » mar. 03 juin 2008, 12:42

Merci pour ta réponse rapide!

j'ai pu tester ta solution mais le problème c'est que quand j'utilise la fonction sur le /var/www/html ça marche mais si je fais ça sur le dossier de mon montage samba (/mnt/mails/thomas) ça me mets en taille 0 avec l'erreur suivante :

Code : Tout sélectionner

PHP Warning: opendir(/mnt/mails/thomas): failed to open dir: Permission denied in /var/www/html/index.php


Pourtant les droit sont bon, j'ai mis à tous le monde les droits de lecteur/execution sur tous le point de montage :

Code : Tout sélectionner

drwxr-xr-x 1 root root 4096 mar 31 12:32 thomas


Sinon une autre question me trotait dans la tete, ça sert à quoi la command php shell_exec si elle peut etre utilisé que par root et qu'on peut pas executer apache en root?

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Acces partage par Apache

Messagepar dexmon » mer. 04 juin 2008, 10:31

NOn, j'ai pas dit qu'elle devait être exécutée que par root, il ya des binaires qui ne peuvent être exécuté que par Root comme par exemple ifconfig ou iptables ou encore celui que tu essais de lancer (du).
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Acces partage par Apache

Messagepar dexmon » mer. 04 juin 2008, 10:32

L'utilisateur qui lance le script sur /var/www/html/index.php est diffférent de celui qui est sur /mnt/mails/thomas

en root et en console:
fait un

Code : Tout sélectionner

ls -l /var/www/html/

et un

Code : Tout sélectionner

ls -l /mnt/mails/thomas/

Puis un

Code : Tout sélectionner

 ls -l /mnt/mails/

et envoi la sortie.

cette commande va lister les droits et permissions de tous les fichiers situés dans ces répertoires et tu remarqueras que les utilisateurs sont différents.
ça veut dire que php ne peu pas aller dans le répertoire dont l'utilisateur ne correspond pas à l'utilisateur qui lance le script.

Vérifie aussi la configuration des tes vhosts, il doit normalement y avoir entre les balises <Directory> et </Directory> Order allow,deny et Allow from all
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

freetomfr69
Nouveau membre
Messages : 6
Inscription : lun. 02 juin 2008, 16:48

Re: Acces partage par Apache

Messagepar freetomfr69 » mer. 04 juin 2008, 16:29

Merci pour ta réponse!

Alors voila ce le résultat des commandes que tu m'a données :

ls -l /var/www/html/

Code : Tout sélectionner

-rw-r--r-- 1 root root 476 jun 4 20:03 index.php


ls -l /mnt/mails/

Code : Tout sélectionner

drwxr-xr-x 1 root root 4096 mar 31 12:32 thomas


ls -l /mnt/mails/thomas/

Code : Tout sélectionner

-rwxr-xr-x 1 root root 1787 aou 9 2007 monfichier.txt


J'ai un peu pres compris ce que tu as voulu dire mais par contre je n'ai pas trop compris ou les droits étaient différents...

Sinon voila les vhosts de mon httpd.conf :

Code : Tout sélectionner

<Directory "/var/www/html">
Options Indexes FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Acces partage par Apache

Messagepar dexmon » jeu. 05 juin 2008, 7:48

L'utilisateur de ton serveur web est www-data si je ne dit pas de connerie (sur debian en tout cas) et l'utilisateur du fichier que tu essai d'ouvrir est root.
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

freetomfr69
Nouveau membre
Messages : 6
Inscription : lun. 02 juin 2008, 16:48

Re: Acces partage par Apache

Messagepar freetomfr69 » jeu. 05 juin 2008, 9:58

Oui j'avais vu un peu pres ça. L'utilisateur d'apache sous Red Hat est apache. J'ai essayé de monter le partage avec comme propriétaire et comme groupe apache et cela me donne toujours la même erreur. J'ai meme essayé de lancer apache avec un utilisateur que j'ai créé et faisant partie du groupe root et pareil.

Ce qui me parait bizarre c'est qu'apache arrive à exécuter le script sur d'autre dossier avec les mêmes droits (/var/www/html/test) et ne contenant que 2 ou 3 simples fichiers texte.

freetomfr69
Nouveau membre
Messages : 6
Inscription : lun. 02 juin 2008, 16:48

Re: Acces partage par Apache

Messagepar freetomfr69 » mar. 10 juin 2008, 11:55

Pas d'idée?

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Acces partage par Apache

Messagepar dexmon » mar. 10 juin 2008, 16:49

Fait des recherche sur samba avec Google, trouve des tutos de configuration, visite ce site il pourra t'aider:
http://www.coagul.org/spip.php?page=rec ... rche=samba
http://www.google.be/search?aq=f&hl=fr& ... %3Dlang_fr

Sinon au niveau de ton vhost apache rajoute ceci:

Code : Tout sélectionner

DocumentRoot /mnt/mail/thomas
<Directory /mnt/mail/thomas>
      AllowOverride All
      Options All -Indexes
      Order allow,deny
      Allow From all
</Directory>

redémarre apache.
ça devrait autoriser l'accès pour ce répertoire au serveur web.

Bonne chance.
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

freetomfr69
Nouveau membre
Messages : 6
Inscription : lun. 02 juin 2008, 16:48

Re: Acces partage par Apache

Messagepar freetomfr69 » mer. 11 juin 2008, 16:53

Merci pour ta réponse.

Le probleme c'est qu'il me met une erreur lors du redemarrage d'apache :

Code : Tout sélectionner

DocumentRoot must be a directory


Je comprend pas trop pourquoi tu veux mettre le DocumentRoot qui pointe la dessus car apres apache n'ira plus chercher mes fichiers php qui sont dans /var/www/html.

J'avoue que je suis completement perdu la...

Avatar de l’utilisateur
dexmon
Gourou
Gourou
Messages : 793
Inscription : sam. 18 juin 2005, 9:55
Localisation : /usr/local/apache
Contact :

Re: Acces partage par Apache

Messagepar dexmon » mer. 11 juin 2008, 22:25

Ce n'est pas ce que je t'ai demandé de faire :|
tu doit créer un alias vers thomas et mettre les directives que je t'ai dit dans cet alias qui se trouve lui dans la configuration de ton vhost.
ImageUNIX foreverImage
Avant toute demande de support, vérifiez votre fichier error.log Apache.
----------------------------------------

wilf
Nouveau membre
Messages : 1
Inscription : sam. 21 juin 2008, 20:05
Contact :

Re: Acces partage par Apache

Messagepar wilf » sam. 21 juin 2008, 20:34

Bonjour,
Je rencontre le même problème, de tous les essais effectués, je crois pouvoir en déduire que le problème est du au fait que Apache ne s'exécute pas root, et aucun lien hors du chroot n'est autorisé. Donc comment permettre un accès à un partage même via un lien placé dans l'espace chrooter ?


Revenir vers « PHP »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 6 invités