Articles

Permissions WordPress – Comment configurer des systèmes de fichiers et des propriétés appropriés

  • 12 min de lecture
  • WordPress,Serveurs,Sécurité,Techniques (WP)
  • Enregistré pour une lecture hors ligne
  • Partager sur Twitter, LinkedIn
Lorsque les gens parlent de la sécurité de WordPress, les permissions et la propriété des fichiers sont généralement la dernière chose à laquelle ils pensent. L’installation de plugins de sécurité est une bonne pratique et une nécessité pour chaque site Web WordPress. Cependant, si les permissions de votre système de fichiers ne sont pas configurées correctement, la plupart de vos mesures de sécurité pourraient être facilement contournées par des intrus.

Lorsque les gens parlent de la sécurité de WordPress, les permissions et la propriété des fichiers sont généralement la dernière chose à laquelle ils pensent. L’installation de plugins de sécurité est une bonne pratique et une nécessité pour chaque site Web WordPress. Cependant, si les autorisations de votre système de fichiers ne sont pas configurées correctement, la plupart de vos mesures de sécurité pourraient être facilement contournées par des intrus.

wordpress permissions

Les autorisations et la propriété sont assez importantes dans les installations WordPress. Les configurer correctement sur votre serveur Web devrait être la première chose que vous faites après avoir installé WordPress. Avoir un mauvais ensemble de permissions peut provoquer des erreurs fatales qui arrêtent net votre site Web. Des autorisations erronées peuvent également compromettre votre site Web et le rendre vulnérable aux attaques.

Lectures complémentaires sur SmashingMag:

  • Que faire lorsque votre site Web tombe en panne
  • Comment garder votre flux de travail de codage organisé
  • Comment découvrir pourquoi votre site Web a cessé de fonctionner
  • 9 étapes pour une relation heureuse avec votre fournisseur d’hébergement

A part les problèmes de sécurité, un certain nombre d’autres problèmes peuvent découler du fait d’avoir un mauvais ensemble de permissions et de propriété. Avez-vous déjà rencontré un écran blanc vide en essayant de charger votre site web pour la première fois ? Ou avez-vous déjà reçu des messages d’erreur en essayant de télécharger des images dans le téléchargeur de médias ? Corriger les permissions et la propriété de vos fichiers et dossiers permet souvent de résoudre ce type de problèmes.

Dans cet article, nous vous apprendrons tout sur les permissions et la propriété du système de fichiers de WordPress : ce qu’elles sont, pourquoi elles sont importantes et comment les configurer. Vous apprendrez quelques principes de base que je suis pour garder mon système de fichiers intact. Nous couvrirons également les deux configurations de serveur WordPress les plus courantes. Nous expliquerons comment elles diffèrent et, plus important encore, comment définir les autorisations et la propriété appropriées pour chacune d’elles.

Terminal Vs. Client FTP

Au cours de cet article, nous utiliserons le terminal pour modifier les permissions et la propriété. Pourquoi ne pas utiliser un client FTP à la place ? La raison est que FTP est un peu limité pour nos besoins. FTP peut être utilisé pour transférer des fichiers et modifier les autorisations de fichiers et de dossiers, mais il ne peut pas être utilisé pour modifier les paramètres de propriété.

Pour exécuter les commandes énumérées dans cet article, vous devrez être connecté à votre serveur en utilisant la commande SSH. Si vous n’êtes pas familier avec le terminal et la commande SSH, vous pouvez en apprendre davantage à leur sujet dans l’article « Introduction aux commandes Linux. »

Utilisateurs et groupes

Avant toute chose, nous devons rapidement parler de ce que sont les utilisateurs et les groupes, car ceux-ci vont de pair lors de la définition des permissions.

Pour faire simple, un utilisateur est un compte qui a accès à l’ordinateur, et un groupe est juste un identifiant pour un certain ensemble d’utilisateurs. Cela signifie que chaque fois que vous transférez des fichiers par FTP, vous utilisez un compte utilisateur sur votre serveur. Et selon la façon dont votre hôte a configuré votre compte, vous (l’utilisateur) pouvez appartenir à un ou plusieurs groupes. Les utilisateurs et les groupes sont comme les utilisateurs et les rôles dans WordPress. Les deux sont conceptuellement les mêmes, sauf que les premiers sont utilisés sur votre serveur.

Les utilisateurs et les groupes sont importants car ils aident à identifier les privilèges pour tous nos fichiers et dossiers. Les propriétaires d’un fichier auraient normalement tous les privilèges sur celui-ci ; les autres utilisateurs qui appartiennent au même groupe auraient moins de privilèges sur celui-ci ; tandis que tout le monde pourrait n’avoir aucun privilège sur celui-ci. Ces privilèges sont ce que nous appelons des permissions.

Que sont les permissions de fichiers ?

Les permissions dictent ce que les utilisateurs peuvent faire avec un fichier. Une permission est représentée par un ensemble de chiffres, tels que 644 ou 777, appelés mode de permission. Si vous avez déjà utilisé des plugins dans WordPress, alors il est fort probable que certains d’entre eux vous aient demandé de modifier les permissions d’un fichier ou d’un répertoire parce que le plugin ne peut pas y écrire. En modifiant les permissions du fichier, vous autorisez le serveur Web à accéder à ce fichier ou à ce répertoire.

Pensez à un mode de permission comme un ensemble d’énoncés « qui peut faire quoi », dans lequel chaque chiffre correspond à la partie « qui » de l’énoncé :

  • Premier chiffre. Ce que l’utilisateur du compte propriétaire du fichier peut faire
  • Deuxième chiffre. Ce que les autres comptes utilisateurs du groupe du propriétaire peuvent faire
  • Troisième chiffre. Ce que les comptes d’utilisateur de tous les autres (y compris les visiteurs du site Web) peuvent faire

Puis, le chiffre correspond à la partie « quoi » de la déclaration et est une somme d’une combinaison de n’importe lequel de ces chiffres :

  • 4 Lire un fichier, ou lire les noms des fichiers dans un dossier
  • 2 Écrire ou modifier un fichier, ou modifier le contenu d’un dossier
  • 1 Exécuter ou exécuter un fichier, ou accéder aux fichiers dans un dossier

Ces chiffres correspondent aux privilèges qui sont attribués au « qui » dans le mode de permission. Notez dans la liste ci-dessus que les privilèges ont une signification différente pour les fichiers et les dossiers.

Utiliser le bon mode de permission est assez important. Pour mieux illustrer cela, pensez à nouveau aux utilisateurs et aux rôles dans WordPress. Sur un site Web WordPress, les contributeurs et les administrateurs disposent de différents ensembles de capacités. Les contributeurs peuvent créer de nouveaux articles de blog, mais ils ne peuvent pas ajouter de plugins. Les administrateurs, quant à eux, peuvent ajouter des plugins et créer des articles de blog. Les administrateurs peuvent même modifier l’apparence du site Web s’ils le souhaitent. Une ligne claire sépare ce que les utilisateurs de différents rôles peuvent faire. C’est la même chose avec les modes de permission, sauf qu’au lieu de traiter des articles de blog et des options de thème, nous traitons des fichiers et des dossiers sur le serveur.

Changer les modes de permission

Les clients FTP fournissent généralement une interface où vous pouvez commodément changer le mode de permission de vos fichiers et dossiers. Voici une capture d’écran de l’interface de mon client FTP:

Example of a permission mode interface.
Exemple d’une interface de mode de permission.

Si vous avez accès au terminal de votre serveur, vous pouvez également utiliser la commande chmod pour changer le mode de permission d’un fichier ou d’un dossier:

sudo chmod 644 <file>

Pour changer les modes de permission de tous les fichiers ou dossiers, utilisez chmod en tandem avec la commande find. Par exemple, vous pouvez utiliser cette commande pour changer tous les fichiers en 644:

sudo find . -type f -exec chmod 644 {} +

Ou utiliser cette commande pour changer tous vos dossiers en 755:

sudo find . -type d -exec chmod 755 {} +

Référez-vous à  » Changer les permissions des fichiers dans le Codex WordPress  » pour un guide sur le changement des modes de permission.

La différence entre 644 et 777

Regardons quelques modes de permission et comment ils affectent notre site web.

Que signifierait un script PHP avec un mode de permission de 644 ? En suivant l’explication ci-dessus du fonctionnement des modes de permission, nous pouvons déchiffrer ce que ce mode permet aux utilisateurs de faire avec notre script :

  • Les privilèges du propriétaire sont « lire » (4) + « écrire » (2) = 6
  • Les privilèges du groupe du propriétaire sont « lire » (4) = 4
  • Les privilèges de tous les autres sont « lire » (4) = 4

En langage clair, cela signifie que :

  • si nous possédons le script, nous pouvons le lire et le modifier;
  • tous les autres ne peuvent que le lire.

Comme nous pouvons le voir, 644 est un bon mode de permission pour notre script PHP. Nous pouvons y apporter des modifications, et notre serveur Web peut le lire.

Maintenant, regardons les dossiers. Et si nous possédions un dossier dont le mode de permission est 777 ? Ce mode de permission peut être décomposé comme suit :

  • Les privilèges du propriétaire sont « lire » (4) + « écrire » (2) + « exécuter » (1) = 7
  • Les privilèges du groupe du propriétaire sont « lire » (4) + « écrire » (2) + « exécuter » (1) = 7.
  • Les privilèges de tous les autres sont « lire » (4) + « écrire » (2) + « exécuter » (1) = 7

Cela signifie que

  • n’importe qui peut obtenir une liste de noms de fichiers dans notre dossier ;
  • toute personne peut créer, modifier et supprimer tout fichier dans notre dossier;
  • toute personne peut accéder aux fichiers de notre dossier.

Il est évident que 777 est un mauvais mode de permission pour quoi que ce soit sur notre site WordPress car n’importe quel visiteur serait capable d’ajouter des fichiers à notre répertoire ou même de supprimer des scripts. Pire, n’importe qui serait capable de mettre un code malveillant et de compromettre notre site web.

Configurations du serveur WordPress

Maintenant, nous connaissons les permissions et savons comment les lire. Mais avant de procéder à la modification de toutes nos permissions, nous devons comprendre comment notre serveur est configuré. Parce que les permissions traitent des comptes et des groupes d’utilisateurs, nous devons savoir comment fonctionne notre site Web WordPress.

Il existe beaucoup de configurations de serveur différentes. Différentes configurations ont besoin de différents ensembles de modes de permission pour que WordPress fonctionne correctement et en toute sécurité. Nous parlerons seulement des deux configurations les plus courantes et des permissions appropriées pour elles :

  • Configuration standard du serveur :
    • Vous avez un compte utilisateur.
    • Votre serveur Web s’exécute sous un autre compte utilisateur.
  • Configuration de serveur partagée ou configuration suEXEC:
    • Vous avez un compte d’utilisateur.
    • Les autres personnes qui utilisent le serveur ont des comptes d’utilisateur et pourraient partager le même groupe que votre compte d’utilisateur.
    • Votre serveur Web s’exécute en tant que propriétaire de vos fichiers WordPress.

La principale différence entre ces deux est dans la façon dont le serveur Web fonctionne.

Permissions pour une configuration standard de serveur WordPress

Les configurations standard de WordPress nécessitent un peu plus de travail que les configurations de serveur partagé parce que le serveur Web n’a aucune relation avec notre compte utilisateur.

Propriété des fichiers et des dossiers pour WordPress

D’abord, nous devons ajuster la propriété des fichiers et des dossiers de nos fichiers WordPress. Nous devrons nous assurer de ce qui suit :

  • que votre compte utilisateur est le propriétaire de tous les fichiers et dossiers WordPress,
  • que votre compte utilisateur et le compte utilisateur du serveur Web appartiennent au même groupe.

Pour connaître les groupes auxquels appartient votre compte utilisateur, vous pouvez utiliser cette commande dans le terminal de votre serveur :

groups

Puis, pour connaître les groupes auxquels appartient votre serveur Web, vous pouvez insérer temporairement cet extrait PHP dans l’un de vos scripts WordPress :

echo exec( 'groups' );

Si votre utilisateur et le serveur Web n’appartiennent pas au même groupe, vous pouvez utiliser la commande suivante dans le terminal pour ajouter votre utilisateur à l’un des groupes de votre serveur Web :

sudo usermod -a -G <a-common-group-name> myuser

Enfin, pour s’assurer que tout ce qui se trouve dans notre dossier WordPress appartient à notre compte utilisateur et possède le groupe partagé que nous venons d’ajouter, exécutez cette commande dans votre dossier WordPress :

sudo find . -exec chown myuser:a-common-group-name {} +

Permissions pour WordPress

Tous nos fichiers et dossiers devraient maintenant avoir la propriété correcte. Il est maintenant temps d’ajuster les modes de permission. Pour simplifier les choses, vous n’aurez qu’à vous souvenir des éléments suivants :

  • Tous les fichiers doivent être 664.
  • Tous les dossiers doivent être 775.
  • wp-config.php doivent être 660.

Voici ce que nous essayons d’obtenir avec cet ensemble de modes de permission :

  • Notre compte utilisateur peut lire et modifier nos fichiers.
  • WordPress (via notre serveur Web) peut lire et modifier nos scripts.
  • WordPress peut créer, modifier ou supprimer des fichiers et des dossiers.
  • Les autres personnes ne peuvent pas voir nos informations d’identification de base de données dans wp-config.php.

Vous pourriez penser que permettre à WordPress d’avoir des privilèges complets avec nos dossiers n’est pas sûr. Ne vous inquiétez pas – nous faisons cela parce que WordPress a besoin de certaines fonctionnalités pour créer et modifier des fichiers. WordPress nous permet de télécharger et de supprimer des thèmes et des plugins, et même de modifier des scripts et des styles à partir de l’interface d’administration. Sans ce type de permission, nous devrions télécharger manuellement des thèmes et des plugins à chaque fois en utilisant le FTP.

Vous pouvez utiliser votre client FTP pour modifier les modes de permission, ou vous pouvez utiliser les commandes suivantes dans votre répertoire WordPress pour ajuster rapidement les permissions de tous vos fichiers et dossiers :

sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +sudo chmod 660 wp-config.php

Notez que certains serveurs Web sont plus stricts que d’autres. Si le vôtre est strict, alors définir votre wp-config.php à 660 pourrait empêcher votre site Web de fonctionner. Dans ce cas, laissez-le simplement à 664.

Permissions pour une configuration de serveur partagé ou une configuration SuEXEC

Les permissions pour les configurations de serveur partagé sont plus faciles à mettre en œuvre. Nous ne nous attarderons pas sur la propriété car le serveur Web s’exécute en tant que propriétaire de nos fichiers et dossiers. Comme notre compte utilisateur et le serveur Web partagent les mêmes permissions (les deux sont propriétaires), nous pouvons plonger directement dans la modification des modes de permission :

  • Tous les fichiers doivent être 644.
  • Tous les dossiers doivent être 755.
  • wp-config.php doivent être 600.

Similaires à l’ensemble précédent de modes de permission, ceux-ci se décomposent comme suit :

  • Notre compte utilisateur peut lire et modifier nos fichiers.
  • WordPress (via notre serveur Web et en tant que propriétaire du compte) peut lire et modifier nos scripts.
  • WordPress peut créer, modifier ou supprimer des fichiers ou des dossiers.
  • Les autres personnes ne peuvent pas voir nos informations d’identification de base de données dans wp-config.php.

Encore, vous pouvez utiliser un client FTP pour modifier les modes de permission, ou vous pouvez utiliser les commandes suivantes dans votre répertoire WordPress pour ajuster rapidement les permissions de tous vos fichiers et dossiers :

sudo find . -type f -exec chmod 644 {} +sudo find . -type d -exec chmod 755 {} +sudo chmod 600 wp-config.php

Similaire à la configuration standard du serveur WordPress, votre serveur pourrait être plus strict que d’autres et ne pas autoriser wp-config.php à être 600. Dans ce cas, vous pouvez l’ajuster à un 640 plus clément ; si cela ne fonctionne toujours pas, alors utilisez 644.

Suivez toujours ces directives et vos fichiers WordPress devraient être protégés des intrus.

Common Pitfalls

Une erreur commune que les gens font est de définir le dossier uploads à 777. Certains le font parce qu’ils obtiennent une erreur en essayant de télécharger une image sur leur site Web, et 777 corrige rapidement ce problème. Mais ne donnez jamais un accès illimité à tout le monde, sinon vous rendrez le serveur Web vulnérable aux attaques. Si vous suivez les directives abordées dans cet article, alors vous ne devriez avoir aucun problème pour télécharger des fichiers sur votre site Web.

Parfois, cependant, un plugin vous demandera de définir un fichier à 777. Dans ces occasions, vous pouvez le définir temporairement à 777, mais assurez-vous de le remettre dans son mode de permission original lorsque vous avez terminé.

Conclusion

Nous avons appris maintenant les permissions appropriées et la propriété des fichiers d’un site Web WordPress. Nous avons également appris à éviter un mode de permission de 777 en raison de la façon dont il met en danger le serveur Web.