Comment configurer et sécuriser les permissions de fichiers dans WordPress ?

Montrer le sommaire Cacher le sommaire

Les permissions de fichiers WordPress sont souvent négligées jusqu’au jour où un plugin ne peut plus écrire, qu’un upload échoue ou qu’un pirate prend le contrôle. Bien gérées, elles réduisent les risques et limitent les dégâts ; mal réglées, elles transforment une petite vulnérabilité en brèche durable. Voici des conseils pratiques, des erreurs fréquentes et des actions concrètes pour que vos fichiers et dossiers restent fonctionnels et sûrs.

Comment repérer vite un problème de permissions sur votre site WordPress

Plusieurs indices vous avertissent qu’il y a un souci : erreurs 500, écriture impossible dans wp-content/uploads, échecs d’installation de plugins, page blanche (white screen of death) ou fichiers système passés en lecture seule comme index.php ou .htaccess. Parfois le serveur renvoie un message explicite « permission denied » dans les logs.

Écran d'ordinateur montrant des logs serveur et erreurs 500
Les logs Apache/Nginx aident à repérer les problèmes de permissions.

Vérifiez d’abord les logs Apache/Nginx et PHP. Ensuite contrôlez l’état avec un accès SSH si possible en lançant ls -l à la racine de WordPress. Si vous n’avez que cPanel ou un client FTP vous pouvez aussi y voir les valeurs numériques (0644, 0755, etc.).

Attention aux faux diagnostics : des fichiers en 444 n’indiquent pas toujours une attaque, mais c’est un signal fort à creuser. De même, ne vous contentez pas d’un outil qui « corrige » automatiquement les permissions sans expliquer ce qu’il change.

Quelles permissions appliquer en pratique pour éviter les erreurs courantes

Les valeurs classiques servent de base parce qu’elles équilibrent sécurité et fonctionnement. En règle générale on vise : fichiers 644 et répertoires 755. Mais il existe des exceptions liées à la configuration PHP et à l’hébergement.

Fichier ou dossier Valeur recommandée Pourquoi
Fichiers PHP (index.php, .php racine) 644 Lecture par le serveur, écriture réservée au propriétaire
Répertoires (wp-admin, wp-includes, etc.) 755 Permet la navigation dans le dossier sans autoriser l’écriture publique
wp-config.php 600 ou 640 selon l’hôte Contient les identifiants DB et clés, limiter l’accès au strict nécessaire
.htaccess 644 (ou 640 selon host) Le serveur doit lire les règles mais l’écriture doit rester restreinte
wp-content/uploads 755 Plugins et WordPress doivent pouvoir créer des fichiers

N’utilisez jamais 777 en production. Cela autorise tout le monde à écrire et facilite nettement l’élévation de privilèges par un script malveillant.

Comment corriger les permissions sans casser le site et les précautions à prendre

Avant toute modification sauvegardez votre site et vos fichiers. Testez sur un environnement de préproduction si possible. Les commandes les plus utiles en SSH sont simples mais puissantes : pour remettre une base saine

Commandes pratiques

Exemples fréquents à adapter selon le chemin et l’utilisateur :

Terminal SSH affichant des commandes chmod et chown
Commandes SSH pratiques pour corriger permissions et propriétaire.

  • find /chemin/wordpress -type d -exec chmod 755 {} ; pour les dossiers
  • find /chemin/wordpress -type f -exec chmod 644 {} ; pour les fichiers
  • chmod 600 /chemin/wordpress/wp-config.php fixer le fichier de config
  • chown -R user:webgroup /chemin/wordpress ajuster le propriétaire et le groupe

Ne lancez pas mécaniquement un chmod -R 755 sur toute l’arborescence sans réfléchir. Certains fichiers doivent rester non exécutables et rendre un fichier exécutable inutilement peut créer un vecteur d’attaque.

Qui doit posséder les fichiers et quel impact sur la sécurité et les uploads

Le couple propriétaire/groupe détermine ce que PHP, l’utilisateur SSH ou FTP et d’autres processus peuvent faire. Sur Debian/Ubuntu le serveur web tourne souvent sous www-data, sur CentOS sous apache ou nginx. Si vos fichiers sont possédés par votre utilisateur deploy et que PHP s’exécute sous www-data, WordPress peut ne pas pouvoir écrire dans wp-content.

Cas fréquents observés : un développeur exécute des commandes en root et change ownership à son utilisateur personnel, puis les uploads échouent. Solution simple : harmoniser propriétaire et groupe selon qui doit écrire, ou donner le groupe au user web et appliquer les permissions 750/640 quand possible.

Notez aussi le rôle du umask. Un umask trop permissif génère des fichiers world-writable malgré des chmod corrects. Sur VPS, contrôlez la configuration PHP-FPM et le user du pool.

Autres protections complémentaires quand chmod ne suffit pas

Les permissions sont une couche parmi d’autres. Pour durcir efficacement, combinez plusieurs mesures.

  • Interdire l’édition de fichiers depuis le tableau de bord WordPress en définissant define('DISALLOW_FILE_EDIT', true)
  • Déplacer le wp-config.php hors du répertoire web quand le serveur l’autorise
  • Mettre en place une surveillance d’intégrité (hash des fichiers) pour détecter modifications non autorisées
  • Utiliser SFTP avec clés plutôt que FTP et revoir les mots de passe FTP/DB régulièrement
  • Configurer des règles .htaccess ou Nginx pour bloquer l’accès public à certains fichiers sensibles

Sur des environnements avancés, SELinux ou AppArmor peuvent imposer des contextes supplémentaires. Ne changez pas ces contextes sans compréhension, ils sont là pour renforcer la sécurité mais peuvent bloquer le fonctionnement si mal configurés.

Que faire si un malware a modifié vos permissions

Un comportement fréquent des infections est de mettre certaines sources en lecture seule (444) pour empêcher le nettoyage automatique. Si vous constatez cela, isolez le site : mettez un message d’entretien, changez tous les mots de passe, et ne supprimez rien à chaud sans analyse.

Étapes à suivre rapidement

  • Exporter les logs et prendre une sauvegarde complète pour analyse forensique
  • Scanner avec des outils d’analyse de malwares et comparer les fichiers core avec une copie propre
  • Vérifier les tâches cron, les comptes FTP/SFTP et les clés SSH
  • Restaurer depuis une sauvegarde saine si vous en avez une, sinon nettoyer fichier par fichier

Dans la pratique, la collaboration avec l’hébergeur est souvent nécessaire pour identifier l’origine de la compromission et rétablir les ownerships corrects au niveau système.

Erreurs courantes que j’ai souvent vues et comment les éviter

Voici des maladresses fréquentes et la manière de s’en prémunir

  • Installer un plugin de backup qui crée des fichiers world-writable. Vérifiez les permissions des fichiers créés automatiquement.
  • Exécuter des scripts avec sudo quand inutile. Résultat fréquent : owner changé et uploads cassés.
  • Penser qu’un chmod 777 règle tout. Il masque un problème d’ownership et ouvre la porte à des scripts malveillants.
  • Ne pas vérifier les restrictions imposées par un hébergeur géré. Certains environnements refusent toute modification

FAQ

Quelles permissions appliquer si mon hébergeur utilise PHP-FPM

Idéalement vous alignez le propriétaire des fichiers avec l’utilisateur du pool PHP-FPM. Les valeurs 640 pour fichiers et 750 pour dossiers sont souvent appropriées si PHP a besoin d’accès groupe.

Mon plugin d’upload échoue malgré 755 sur uploads que faire

Vérifiez le propriétaire du dossier. Si PHP ne fait pas partie du groupe ayant droit d’écriture, il faudra ajuster le chown ou le groupe du pool PHP. Contrôlez aussi le umask et les logs d’erreur.

Puis-je sécuriser wp-config.php plus fortement que 600

600 est la meilleure option quand le propriétaire est le bon et que PHP s’exécute sous ce même user. Si votre hébergeur exige lecture groupe, 640 est une alternative. Testez toujours le site après modification.

Comment remettre tout à zéro sans tout casser

Sur un environnement de test, exécutez les commandes find pour dossiers et fichiers, puis corrigez ownerships. Faites ça hors production si possible et ne forcez pas les permissions sur des fichiers spéciaux (.htaccess, php.ini).

Pourquoi certains fichiers passent en 444 après nettoyage

Cela peut venir d’un script malveillant réappliquant des droits pour se protéger, ou d’un processus de sécurité du serveur qui verrouille certains fichiers. Analysez les logs et cherchez des scripts suspects ou cron mal configurés.

Donnez votre avis

Soyez le 1er à noter cet article
ou bien laissez un avis détaillé


Publiez un commentaire

Publier un commentaire