Si vous hébergez plusieurs sites web sur un seul et même serveur dédié, vous avez probablement dû être confrontés à ce problème :
Apache ne peut écrire dans un répertoire utilisateur (sauf permissions folkloriques 777 ou lancer le démon httpd en root:root…)
Pour cela, on va utiliser ce qu’on appelle les ACL, les listes de contrôle d’accès.
Avec votre gestionnaire de package préféré, installer les utilitaires fournis par le paquet « acl »
aptitude install acl
Remontez la partition que vous souhaitez contrôler avec les ACL, avec l’option adéquate :
mount -o remount,acl /home
Dans le fstab, rajouter l’option ‘acl’ au point de montage
Par exemple :
cat /etc/fstab /dev/sdb /home ext3 defaults,acl 0 2
Pour finir, appliquez les ACL sur le ou les répertoires concernés !
setfacl -R -m u:sn4ky:rwX,u:www-data:rwX,d:u:sn4ky:rwX,d:u:www-data:rwX,g::r-X,o::r-X,d:g::r-X,d:o::r-X,m::rwX,d:m::rwX /home/sn4ky/public_html/blog/wp-content/
Explications :
- setfacl : le programme (installé avec acl)
- -R : récursif
- -m : modifier (ou créer) une ACL
- u:sn4ky:rwx : défini que l’utilisateur sn4ky (moi) a les droits rwx sur les fichiers et dossiers existants
- u:www-data:rwx : défini que l’utilisateur www-data (Apache) a les droits rwx sur les fichiers et dossiers existants
- d:sn4ky:rwx : défini les droits rwx sur tout fichier ou dossier nouvellement créé après la mise en place de l’ACL (default)
- d:www-data:rwx : idem
- m::rwx : masque a appliquer sur tous fichiers et dossiers courants
- d:m::rwX : masque a appliquer pour toute future création de fichiers ou de dossiers
- g::—,o::— respectivement pour group et other
n.b. : le flag X indique : excécution uniquement si l’objet est un répertoire ou s’il y a déjà les droits d’exécution pour d’autre utilisateurs (manpage : execute only if the file is a directory or already has execute permission for some user)