Droits des fichiers et développement Web
Je sais pas si ça arrive a d'autres, mais perso j'ai toujours eu du mal a mettre mes droits correctement sur mon dossier accéssible par apache ... soit je peut tout faire et apache rien, soit l'inverse, soit ça à l'air de fonctionner un moment puis apache il a besoin de faire ça et il peut pas ... bref j'avais un gros dilème ...
En tout cas grâce à un collègue de bureau (merci Olav ;)) j'ai pu pondre un petit script qui me met tout d'équère !!!
#!/bin/bash #on se place au bon endroit chez moi le home mais si vous n'avez rien changé mettez ici cd /var cd /home/john #changement du propriétaire pour tout le répertoire www (il faut adapter utilisateur et groupe) echo "Changement de proprio:" chown -R john:john ./www #changement des droits sur les répertoires echo "Changement des droits sur les dossiers" find ./www -type d -print0 | xargs -0 chmod 0755 2>/dev/null #changement des droits sur les fichiers echo "Changement des droits sur les fichiers" find ./www -type f -print0 | xargs -0 chmod 0644 2>/dev/null #cas particuliers ou apache a besoin d'être tout puissant echo "Changements particuliers" for pattern in *cache* *_c* *share* do echo "--> (d)" $pattern find ./www -type d -name $pattern -print0 | xargs -0 chmod -R 0777 2>/dev/null done;
Voilà et une fois que j'ai vraiment compris ce qu'il se passe, je me suis senti bête de pas avoir réfléchit avant ... quoiqu'il en soit si vous voulez faire d'autre trous de sécurité comme *cache* ou autre il faut rajouter des patterns à la liste ! (j'entends par trou de sécu, un endroit ou apache est tout puissant ...)
Le fichier je le sauvegarde dans /usr/local/bin/rwww et je fais :
sudo rwww
Au passage je mets ici un lien vers un recueil de commande qui aide pas mal ;)

Comments
Salut PiTiLeZarD,
Je ne veux pas faire le rabat joie mais je te lis régulièrement car tu te trouves listé dans le planète d'Ubuntu et je penses qu'un peu d'aide n'est jamais de refus. Alors voilà ce que j'ai repéré...
sed -e s/dilème/dilemne/
sed -e s/équère/équerre/
N'étant pas prof de français, je ne t'assure pas du reste...mais que cela reste entre nous et ne t'enlève surtout pas l'envie de partager tes trouvailles avec la communauté. Merci pour tes billets...
;)
Aaargh, trop rapide !
bien fait pour moi.
sed -e s/dilème/dilemme/
;)
Pour info, il y a chmod -R a+rX qui fait la même chose que tes deux find | xargs combinés. Le X est volontairement en majuscules.
Pas mal, le chmod -R a+rX .
autre remarque le xargs peut planter s'il y a trop de fichiers qui matchent.
un :
find . -type d -exec chmod +x \{\} \;
est un peu moins performant (la commande chmod est executée pour chaque directory) mais marche quelque soit le nombre de répertoire.
Pour info, je n'ai jamais eu de problème en ajoutant mon utilisateur au groupe apache, et en mettant le guid sur /var/www/html ...
Perso je préfère mettre les dossiers avec appartenant au User si celui ci est spécifique sinon je met www-data .. enfin le user et groupe apache quoi.
ensuite je fait:
chmod -R 664 /www && chmod -R +X /www
664 pour que user et groupe puisse modifier
+X donne les droit executable au dossier uniquement
ainis chaque utilisateur a les droits sur ca partie et le serveur web a ses droits aussi .. (je fournis un accès SSH a mes users)
ben le mieux étant encore le mode suexec je pense, chaque compte tourne avec les droits du user et groupe associé, un user par vhost ...
moins de soucis et plus de souplesse pour la gestion des droits par user ....
ma technique st surement crade mais j'ai créé un groupe www qui à accès en lecture/ecriture à /var/www et je me suis rajouté dedans
eh bien c'est bien compliqué tout ça ! moi je fais juste:
$ sudo adduser ben www-data
(une fois pour toutes)
puis:
$ newgrp www-data && vi /var/www/truc.html
(pour me mettre en tant qu'éditeur www-data)
Euh ... berk !
Je trouve tout cela bien compliqué alors que comme Ben le dit si bien, une simple gestion de groupe fonctionne bien mieux, et avec beaucoup moins de risques d'erreur.
Un conseil : ne suivez pas l'exemple de ce script.
@everyone> Visiblement il y a un paquet de méthodes qui vont bien
perso je suis pas pour me mettre dans le même groupe qu'apache ou de mettre apache dans un autre groupe que le sien d'ou la raison de mon script !
Sinon je trouve que la meilleure méthode c'est encore celle de lucas que je n'ai pas testé encore mais qui m'a l'air bien plus cohérente !
Pour les phautes dortho ... je suis complètement d'accord je réglçme l'indulgence du peuple, jme soigne ... mais on dirait que ça prend pas ! (il faudrait que dotclear permette d'éditer directement je corrigerai plus souvent mes fautes plutot que de passer dans l'interface d'admin à chaque fois ...)