Ticket #416 (closed defect: fixed)

Opened 8 years ago

Last modified 9 months ago

probleme de droit qd upload via PHP

Reported by: woper Owned by: anonymous
Priority: normal Milestone: alternc-3.0
Component: PHP Version: alternc-0.9.3
Severity: minor Keywords:
Cc:

Description (last modified by fufroma) (diff)

lors de l'upload d'un doc via un formulaire php comme celui-ci:

<form name="form2" enctype="multipart/form-data" action="" method="post"><br>
<input type="hidden" name="MAX_FILE_SIZE" value="900000">
send file:<input name="userfile" type="file">
 save as:<input name="serverfile" type="text">
<input type="submit" value="send">
</form>
<?
if(isset($userfile)){
if(is_uploaded_file($userfile)){move_uploaded_file($userfile, $serverfile);}
}
?>

le fichier est créé sur le serveur en n'appartenant pas à l'utilisateur, donc n'est pas pris en compte dans les quotas. Si un fait un chgrp idMembre fichier c'est bon, mais il serait plus simple que celà soit pris en charge par Php.

ADDITIONAL INFORMATION: normalement le fichier devrait avoir les permissions suivantes:

-rw-r--r-- www-data idMembre leFichier

mais en passant par ce formulaire il est:

-rw------- www-data www-data leFichier

Change History

comment:1 Changed 8 years ago by arnaud_lb

Quelles sont les permissions du dossier ou le fichier a été copié ?

comment:2 Changed 8 years ago by woper

Les permissions du répertoire où le fichier a été créé sont:

drwxrws--- www-data 2001 . (==/var/alternc/html/t/test) drwxr-xr-x www-data www-data .. (==/var/alternc/html/t) -rw-r--r-- www-data 2001 monFormulaireDenvoi.php -rw------- www-data www-data monFichierParFormulaire

De plus ne serait-il pas judicieux de mettre un /bin/false comme shell à l'utilisateur apache www-data, pour interdire l'execution de code malveillant?

comment:3 Changed 8 years ago by arnaud_lb

Je n'arrive pas à reproduire le problème avec ces permissions de répertoire. Avec le dossier /var/alternc/html/t/test à drwxrws--- et ton script, ça donne ça:

drwxrws--- www-data 2001 . -rw-r--r-- www-data 2001 uploaded -rw-r--r-- www-data 2001 testupload.php

Par contre, sans le Setgid sur /var/alternc/html/t/test, j'ai le même bug, mais c'est normal.

comment:4 Changed 8 years ago by woper

Alors là je comprend pas, je suis sur une woody avec les paquets suivants: ii alternc 0.9.3.20050404 hosting software managment suite for Debian ii alternc-admint 0.1.0-3 Admin tools for AlternC ii apache 1.3.26-0woody6 Versatile, high-performance HTTP server ii apache-common 1.3.26-0woody6 Support files for all Apache webservers ii apache-ssl 1.3.26.1+1.48- Versatile, high-performance HTTP server with ii libapache-mod- 1.3.19.1a-5 HTTP compression module for Apache ii php4 4.1.2-7.0.1 A server-side, HTML-embedded scripting langu ii php4-cgi 4.1.2-7.0.1 A server-side, HTML-embedded scripting langu ii php4-mysql 4.1.2-7.0.1 MySQL module for php4 ii phpmyadmin 2.2.3-1 A set of PHP-scripts to administrate MySQL o

aucun fichier (httpd.conf, php.ini) n'ont été modifié. Avez-vous une idée?

comment:5 Changed 8 years ago by anarcat

problème bizarre... il est possible que les nouveaux scripts d'install ne metter pas le setgid... à vérifier.

comment:6 Changed 7 years ago by anarcat

  • Type set to defect
  • Milestone changed from 0.9.3 to 1.0

comment:7 Changed 7 years ago by benjamin

Ce probleme est connu, et en effet, si l'utilisateur upload beaucoup d'informations, ces fichiers uploadés n'ont pas pour GID son gid alternc ...

Pour ma part, j'utilise un script shell qui remet les gid et les droits ad-hoc comme dans :

source:alternc/trunk/src/fixperms.sh

comment:8 Changed 6 years ago by anarcat

  • Description modified (diff)

comment:9 Changed 3 years ago by jpfleury

J'ai souvent ce problème quand je manipule des installations de Drupal. Le résultat est que je ne peux pas supprimer certains fichiers. Je dois faire une demande de suppression en passant par le support de Koumbit.

Voici la marche à suivre pour reproduire le bogue (AlternC v. 0.9.10~svn2548):

1)  Télécharger l'archive de Drupal (pour cette marche à suivre, j'ai utilisé Drupal 6.19) et l'extraire. Nous obtenons le dossier drupal-6.19.

2) Copier le dossier par FTP (j'ai utilisé Nautilus) sur un compte hébergé par Koumbit et effectuer l'installation de Drupal en visitant site-test.ext/drupal-6.19/.

3) Toujours par FTP, sélectionner le dossier de Drupal et choisir de le supprimer.

Résultat: Nautilus supprime tout, sauf 1 dossier et 2 fichiers:

Une erreur s'est produite lors de la suppression de files.
Une erreur s'est produite lors de la suppression de settings.php.
Une erreur s'est produite lors de la suppression de default.settings.php.

4) Se connecter à son compte AlternC, aller dans le gestionnaire de fichiers, sélectionner le dossier de Drupal et cliquer sur «Effacer».

Résultat: impossible de supprimer les fichiers restants:

Warning: unlink(/var/alternc/html/c/compte/site-test.ext/drupal-6.19/sites/
default/default.settings.php) [function.unlink]: Permission non accordée in 
/var/alternc/bureau/class/m_bro.php on line 934

Warning: unlink(/var/alternc/html/c/compte/site-test.ext/drupal-6.19/sites/
default/settings.php) [function.unlink]: Permission non accordée in 
/var/alternc/bureau/class/m_bro.php on line 934

Warning: rmdir(/var/alternc/html/c/compte/site-test.ext/drupal-6.19/sites/
default/files) [function.rmdir]: Permission non accordée in 
/var/alternc/bureau/class/m_bro.php on line 932

Warning: rmdir(/var/alternc/html/c/compte/site-test.ext/drupal-6.19/sites/
default) [function.rmdir]: Le répertoire n'est pas vide. in 
/var/alternc/bureau/class/m_bro.php on line 932

Warning: rmdir(/var/alternc/html/c/compte/site-test.ext/drupal-6.19/sites) 
[function.rmdir]: Le répertoire n'est pas vide. in /var/alternc/bureau/
class/m_bro.php on line 932

Warning: rmdir(/var/alternc/html/c/compte/site-test.ext/drupal-6.19) 
[function.rmdir]: Le répertoire n'est pas vide. in /var/alternc/bureau/
class/m_bro.php on line 932

Information supplémentaire: quand je sélectionne files et default.settings.php dans AlternC et que je clique sur «Permissions», la seule option qui apparaît est write et elle est déjà cochée. Maintenant, quand je sélectionne settings.php et que je clique sur «Permissions», l'option write n'est pas cochée, et si je la coche et que je clique sur «Change permissions», ça fonctionne et le message suivant s'affiche:

chmod 100644 file, was 100444 -- 1

Si j'essaie de resupprimer le fichier settings.php, ça ne fonctionne toujours pas.

comment:10 Changed 2 years ago by fufroma

  • Milestone changed from alternc-1.999 to alternc-1.1-security_edition

comment:11 Changed 9 months ago by fufroma

  • Status changed from new to closed
  • Resolution set to fixed
  • Description modified (diff)

Fixed, avec sécu en plus :

  • on a des acl
  • maintenant les gens on un repertoire tempo dans leur home (/var/alternc/html/t/toto/tmp)
  • chaque vhost est bien configuré pour utiliser *ce* répertoire en tant que upload_tmp_dir
Note: See TracTickets for help on using tickets.