Forum général.général Droits bizarres pour les uploads en PHP

Posté par  .
Étiquettes : aucune
0
27
jan.
2007
Bonjour,

J'utilise PHP5 sur suPHP sur Apache 2. Les scripts PHP sont donc exécutés par le serveur web en utilisant l'utilisateur propriétaire du fichier php. Pour sécuriser tout ça, suPHP permet de régler le umask avec lequel tournera le script, chez moi c'est 073.

Tout fonctionne bien SAUF l'upload de fichier : lorsqu'un upload de fichier est effectué à travers PHP, le fichier résultant a le mode 600, et non 604 comme il devrait. Celà empêche donc Apache d'y accéder par la suite. En revanche, la création d'un fichier avec fopen() ou toute autre fonction de PHP donne bien les bons droits (604).

Je précise ma configuration :
Debian Stable + dépôts backports.org, Apache2, php5 sans safe_mode, suPHP 0.6.2 compilé à la main. Umask configuré dans suPHP à 0073.

Il va de soi que je cherche une solution autre que de rajouter un chmod() dans tous les scripts PHP, d'autant plus que je gère une plate-forme d'hébergement mutualisé, je ne vais pas demander à mes clients de modifier des scripts qui posent problème (comme DotClear2 par exemple). L'utilisation de la fonction umask() en début de fichier PHP ne donne rien, l'upload de fichier se passant avant l'exécution du script.

Je galère depuis une semaine sur ce problème sans vraiment trouver de solution. Peut-être quelqu'un at-t-il déjà été confronté à celà ?

Merci de vos conseils,

Setaou
  • # sans dire de connerie (enfin j'espere)

    Posté par  . Évalué à 1.

    upload = geré par apache

    donc c'est plutot de ce coté là qu'il te faut regarder.
    • [^] # Re: sans dire de connerie (enfin j'espere)

      Posté par  . Évalué à 1.

      J'ai forcé le umask d'Apache à 0073 dans son script de démarrage, rien à faire. De plus, le fichier temporaire créé lors d'un upload a un nom commençant par 'php' et appartient bien à l'utilisateur possédant le script PHP correspondant, donc c'est plutôt PHP qui crée ce fichier.

      Ce problème est vraiment curieux. D'autres personnes sur le net semblent l'avoir eu, mais aucune ne l'a résolu de la même façon, et aucune de ces solutions ne marche pour moi !
      • [^] # Re: sans dire de connerie (enfin j'espere)

        Posté par  (site web personnel) . Évalué à 2.

        Consulte le code source ;)

        J'ai déjà touché a ça pour faire une barre de progression d'upload, le meilleur moyen de de regarder dans le code source de php si il y a pas un bug ou si tu t'y prend mal...

        Le code d'upload est dans la source, rfcXXXX.c dans le rep Zend ou core je me souviens plus trop, enfin c'est le seul commençant par rfc...

        Vérifie si il y a un chmod de fait dessus ou autre, trace un peu ça et tu verra.

        Sinon essaye de regarder les variables d'environnement vu que ça dois être dedans non ?
        • [^] # Re: sans dire de connerie (enfin j'espere)

          Posté par  . Évalué à 1.

          Je n'ai rien vu de concluant dans le code source. Il y a bien un chmod 600 qui affecte la création des fichiers temporaires (dont les uploads) mais il est entouré de "#ifdef WIN32" et donc réservé à Windows.

          Je crois que je vais arrêter de chercher sur ce problème car j'ai un workaround sous la main : utiliser un scipt PHP en prepend afin de chmoder avec les bons droits les fichiers uploadés.

          Merci à tous de vos conseils.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.