Debian + Apache + Php (problèmes de droits)

Bonjour à tous !

Je développe actuellement un projet en PHP pour lequel il m’est nécessaire de créer des répertoires et de charger des fichiers à l’intérieur de ces répertoires.

Projet situé dans /var/www, je ne passe pas par un public_html.

Bon je dois dire qu’au départ je n’ai pas été très propre mais manquant de temps, j’ai fais un chmod 777 sur le dossier /var/www (je sais, c’est mal…), j’ai fais cela suite à des problèmes de lecture/écriture par PHP.

Désormais je n’ai plus de problèmes, j’arrive à modifier des fichiers, créer des répertoires et y déposer des fichiers.

Je créer des répertoires avec mkdir(‘nom du rep’, 0777);

Tout à l’air normal mais, un petit bémol persiste; il créer ses répertoires en tant que www-data, jusque là, rien d’anormal, sauf que par la suite il se refuse à supprimer un fichier qu’il a lui même chargé ou supprimer un dossier qu’il a lui même créé.

Ce que je ne comprend pas car étant toujours www-data il a le droit de lecture/écriture sur ses dossiers alors pourquoi ne peut-il pas les supprimer ?

Comment dois-je faire pour régler le problème et si possible de remettre des droits tout propres sans que ça ne me pose de problèmes pour écrire avec PHP ?

Merci :wink:

Tu as un message d’erreur ?

Fait vraiment gaffe à la sécurité de ton appli, par injection tu risque d’avoir ton application qui réécris ou supprime l’un des fichiers de ton application. Pour se faire je te conseil de bien faire gaffe à où est-ce que tu écris ou pas (dans quels répertoires) et à essayer de te limiter au plus petits nombre d’endroit. Le mieux serait un répertoire var où il y aurait tout dedans, ça permettras en outre de pouvoir mettre ce dossier sur le réseau (avec un accès en NFS ou en SSHFS par exemple).

Salut MisterFreez,

Non je n’ai pas de message d’erreur, j’ai donc mis du temps avant de trouver. Je n’avais également aucun message d’erreur lorsque je tentais d’écrire avec PHP alors que /var/www/ n’était pas en 777.

En gros si tu veux a chaque fois qu’il génère un répertoire, faudrait que je lui passe un coup de chmod 777, mais bonjour le truc crade…

Oui je suis d’accord, mais si tu veux, je développe l’application en local. C’est vrai que pour l’instant je n’ai pas bien étudié le sujet. Je me concentre pour le moment sur le code (il s’agira d’un projet de fin de cursus).

Il s’agit d’une plateforme collaborative, chaque utilisateur disposera d’un dossier bien à lui, avec dans ce dossier deux autres dossiers. C’est dans ces dossiers qu’il n’arrive pas à supprimer ce que je lui demande.

Tu vois pas comment je pourrais bien organiser mes droits ? Désolé de ne pas pouvoir te fournir de message d’erreur.

Merci de ta réponse rapide !

Tu ferme bien le fichier avant de le supprimer ?

Au niveau du système ton appli n’est qu’un seul utilisateur. Il va falloir que tu code toi même la sécurité entres les utilisateurs. Pour ce qui est du chmod un 700 c’est déjà mieux. Tu devrait pouvoir gérer de manière plus simple les droit avec umask (mais faut voir la configuration d’Apache pour faire ça). Pareil dans l’arborescence de ton projet je pense qu’un dossier var à la racine avec dedans un dossier par utilisateur serait plus simple dans var tu met tout à 700 (sauf les fichiers qui sont à 600) et dans le reste 400.

Tu peut aussi choisir d’utiliser FTP ou SSHFS chaque utilisateur de ton logiciel a un compte sur le serveur FTP tu y accède tranquillement, tu pourras expliquer que l’architecture de ton projet est scalable (tu peut avoir le serveur FTP et le serveur d’application sur deux machines séparées (et même avoir plusieurs machines pour l’application)). Il faut alors gérer les utilisateurs, la solution belle pour ça c’est LDAP, mais il faudrait voir si tu ne peut pas faire autrement.