Les permissions de fichiers déterminent qui peut lire, écrire ou exécuter chaque fichier de votre serveur, et sur un hébergement mutualisé ou mal configuré, « qui » peut désigner plus que vous seul. Se tromper dans un sens ou dans l'autre cause de vrais problèmes. Trop strictes, et WordPress ne peut pas se mettre à jour. Trop larges, et toute personne qui atteint le serveur peut modifier vos fichiers directement, sans aucune connexion.
Ce que signifient les chiffres
Chaque permission est un nombre à trois chiffres : un pour le propriétaire du fichier, un pour son groupe et un pour tous les autres. Chaque chiffre est une somme de lecture (4), écriture (2) et exécution (1). Ainsi 7 signifie lecture, écriture et exécution ; 6 lecture et écriture ; 5 lecture et exécution ; 4 lecture seule.
- 644 : le propriétaire peut lire et écrire ; le groupe et tous les autres peuvent seulement lire.
- 755 : le propriétaire peut lire, écrire et exécuter ; le groupe et tous les autres peuvent lire et exécuter.
- 600 : seul le propriétaire peut lire et écrire. Personne d'autre ne voit le fichier.
- 777 : tout le monde sur le serveur peut lire, écrire et exécuter. C'est le réglage dont il faut se méfier.
Pour un dossier, « exécuter » signifie avoir le droit d'y entrer, ce qui explique que les dossiers aient besoin de 755 plutôt que de 644.
Le schéma standard de WordPress
- Dossiers : 755. Le propriétaire peut ajouter ou retirer des fichiers ; les autres peuvent seulement regarder dedans et lire.
- Fichiers : 644. Le propriétaire peut modifier ; les autres peuvent seulement lire.
wp-config.php: 600 ou 640. Il contient en clair les identifiants de votre base de données : verrouillez-le plus strictement que tout le reste. Le guide sur wp-config.php explique comment choisir entre les deux.
Le propriétaire compte autant que les chiffres
Les permissions s'appliquent au propriétaire, au groupe et à tous les autres. La question « WordPress peut-il écrire dans ce fichier ? » dépend donc de si le compte qui exécute PHP est le propriétaire du fichier. Si les fichiers appartiennent à un autre compte que celui qui exécute PHP, WordPress se voit comme « tous les autres », et 644 ne lui permettra pas d'écrire. C'est la vraie cause de la plupart des erreurs de téléversement et de mise à jour.
La mauvaise réponse est de tout ouvrir en 777, ce qui règle le symptôme en donnant l'accès en écriture à tous les comptes. La bonne réponse est de corriger le propriétaire, par exemple chown -R votrecompte:votrecompte /chemin/vers/wordpress (chez un hébergeur où vous pouvez changer le propriétaire), ou de demander à votre hébergeur quel compte exécute PHP. Ensuite, le schéma standard 644 et 755 fonctionne.
Pourquoi 777 provoque des piratages
Sur un hébergement mutualisé, « tous les autres » n'est pas théorique. Cela peut inclure d'autres comptes du même serveur. Un fichier ou un dossier modifiable par tous signifie que n'importe quel processus qui atteint le système de fichiers peut le modifier : c'est ainsi qu'un seul plugin vulnérable sur un site peut parfois servir à écrire des fichiers malveillants sur un site voisin. Même sur un serveur que vous contrôlez, un dossier en 777 permet à une faille de n'importe quel service en cours d'exécution de déposer un fichier dans votre site.
Le 777 est généralement posé par quelqu'un qui règle vite une erreur de téléversement, sans chercher quel était le correctif plus étroit. Il reste ensuite des années. Comme les téléversements sont un endroit courant où les attaquants déposent du PHP, un wp-content/uploads modifiable par tous est particulièrement risqué.
Comment vérifier les permissions de votre site
Dans le gestionnaire de fichiers de votre hébergeur, la colonne Permissions affiche le réglage actuel de chaque élément, et la plupart permettent de le modifier par clic droit. En SSH, commencez par chercher les problèmes avant de rien changer :
- Trouver les fichiers modifiables par tous :
find . -type f -perm /o+w - Trouver les dossiers modifiables par tous :
find . -type d -perm /o+w - Trouver les fichiers qui ne sont pas en 644 ou les dossiers qui ne sont pas en 755 :
find . -type f ! -perm 644etfind . -type d ! -perm 755
Un résultat vide pour les deux premières est ce que vous voulez. Pour remettre toute l'installation au schéma standard, lancez ces deux commandes depuis le dossier de WordPress :
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
Réglez ensuite wp-config.php séparément avec chmod 600 wp-config.php. Faites toujours une sauvegarde d'abord et vérifiez que vous êtes dans le bon dossier avec pwd. Un chemin mal saisi peut appliquer les permissions à plus que prévu.
Les permissions comme signal de détection
Les permissions vous disent aussi quand quelque chose a changé. Un nouveau fichier modifiable par tous dans un dossier du cœur, ou un fichier PHP dans uploads aux permissions inhabituelles, mérite un examen. Combinez l'audit des permissions avec la vérification d'intégrité du cœur et la checklist de sécurité pour une vue complète.
SiftWP vérifie les permissions de fichiers dans son analyse hebdomadaire et signale tout ce qui s'écarte du schéma standard, y compris un 777 oublié qui traîne depuis que quelqu'un l'a utilisé pour contourner une erreur de téléversement. Il analyse via SSH, sans plugin sur le site.