Bonjour à toutes et tous, cet article fait écho à celui que j’avais écrit il y a un petit moment de ça, et qui expliquait comment installer son dossier www dans le home. Le gros soucis est que lorsqu’on procède ainsi, il y a un conflit de droit pour l’écriture des fichiers et dossiers entre le user qui possède le dossier dans home, et le user apache. Mais ça c’était avant !
Quelques explications
Avant de commencer il faut savoir que lorsque l’on effectue une opération via WordPress, comme installer un thème, un plugin ou uploader un fichier dans la bibliothèque de médias, c’est le user Apache qui écrit sur le disque. De fait, si le dossier www de notre site est installé dans le home, la chose devient impossible et on est forcé : soit de lui donner tous les droits (genre 777), soit de le rendre propriétaire du dossier, et dans ce cas là adieu la possibilité de faire des modifications directement en ftp par la user.
La solution
On va procéder par étape et dire que le user qui exécute Apache ne sera plus www-data, mais un user intermédiaire que l’on nommera « wordpress ». On créé donc le user :
1 2 3 | sudo adduser wordpress |
On ajoute le user « user » au groupe « wordpress »
1 2 3 | sudo usermod -a -G wordpress user |
On va à présent modifier le user qui exécute apache. On édite le fichier envvars d’apache
1 2 3 | sudo nano /etc/apache2/envvars |
on repère les lignes
1 2 3 4 | export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data |
et on remplace « www-data » par le user « wordpress » comme ceci
1 2 3 4 | export APACHE_RUN_USER=wordpress export APACHE_RUN_GROUP=wordpress |
puis on redémarre apache
1 2 3 | sudo service apache2 restart |
A présent on se rend dans /home et on modifie le propriétaire du dossier www
1 2 3 4 | cd /home/user sudo chown -R user:wordpress www/ |
Le propriétaire est bien configuré, il ne reste plus qu’à configurer les droits sur les fichiers et dossiers
1 2 3 4 | sudo find ./www -type d -exec chmod 0755 {} \; # applique 755 sur les dossiers sudo find ./www -type f -exec chmod 0644 {} \; # applique 644 sur les fichiers |
Et c’est tout ! Fini les problèmes d’écriture à la fois par apache et votre user.