Les CHMOD pour l’hébergement internet

Les CHMOD, ça parait simple et complexe à la fois. D’ailleurs, la plupart du temps, les webmasters s’en préoccupent peu, ou pas du tout, surtout quand leur site est hébergé sur un serveur mutualisé. On connecte son FTP, on upload, ça marche et voilà ! Pourtant, une mauvaise configuration peut faire survenir des bugs dans de nombreuses applications, message d’erreur, site qui ne marche plus… (on connait souvent ça avec le kit de paiement ATOS). Plus grave, cette mauvaise configuration ne garantie pas une sécurité optimale et peut faciliter le hack de votre site et l’intrusion dans vos serveurs. Faisons donc un petit tour des bonnes pratiques.

Petit rappel sur les Chmod

Révisons rapidement les Chmod pour bien commencer, on a trois types de permissions, lesquelles peuvent être notées de manières symboliques par x (execute), w (write) ou r (read), ou de manière octale, respectivement 1, 2 et 4. Ces droits sont applicables aux fichiers comme aux répertoires :

  • le droit d’exécution, noté x ou 1 ; appliqué à un fichier, il permet de l’exécuter (exécutable unix par exemple), pour les répertoires, ce droit permet d’entrer dans le répertoire, et par conséquent, s’il n’est pas accordé, empêche de lister son contenu
  • le droit d’écriture, noté w ou 2 ; il permet de modifier le fichier, ou pour un répertoire, d’en modifier le contenu (ajout/suppression de fichiers)
  • le droit de lecture, noté r ou 4 ; il permet de lire le contenu d’un fichier, ou appliqué à un répertoire, d’en lister le contenu.

De plus, il faut savoir que ces droits s’appliquent à trois types d’utilisateurs :

  • le propriétaire du fichier (nommé « user », noté « u »)
  • le groupe, concerne tous les autres membres du groupe (un groupe peut rassembler plusieurs utilisateurs, il est nommé « group », noté « g »)
  • tous, concerne tous les utilisateurs (nommé « others », noté « o »)

Voici un petit tableau récapitulatif :

DroitsChiffreCalcul
---00 + 0 + 0
r--44 + 0 + 0
-w-20 + 2 + 0
--x10 + 0 + 1
rw-64 + 2 + 0
-wx30 + 2 + 1
r-x54 + 0 + 1
rwx74 + 2 + 1

Les bons réglages pour l’hébergement

On doit maintenant se poser la question des Chmod à attribuer à nos fichiers pour être dans des conditions de sécurité acceptables. Le mieux, c’est de tout mettre à 777…

Le chmod 777 de commitstrip

Vous l’aurez donc compris, le conseil du chmod 777, c’était une boutade.

Par défaut, les répertoires sont en général à 755 – ce qui autorise tout pour le propriétaire du fichier (premier chiffre), et donne le droit à la lecture et à l’exécution (listage dans le cas des répertoires) pour les autres (4+1 pour le groupe [second chiffre] et les autres [troisième chiffre]) – et les fichiers à 644 – autorise la lecture et l’écriture pour le propriétaire (4+2) et la lecture uniquement pour les autres.

Comment optimiser au mieux les Chmod ? La meilleur politique consiste, comme toujours en sécurité informatique, à ne rien autoriser mis à part ce qui est nécessaire. Vous pouvez donc limiter les autorisations à 555 (lecture et listage) pour les répertoires n’ayant pas de contenu ayant vocation à changer. Typiquement un répertoire contenant des images ou des fichiers html et/ou php. En ce qui concerne les fichiers, 444 (lecture seule) suffira pour leur majorité, tels que les images, les fichiers php, html, javascript…

Vous modifierez au cas par cas les droits des fichiers et des répertoires s’ils ont besoin de droits supplémentaires. Par exemple dans le cas d’un script exécutable, il faudra au moins lui donner le droit d’exécution en plus de celui de lecture, donc 555. De même, en ce qui concerne les fichiers de logs, n’oubliez pas de leur accorder le droit en écriture, sans quoi il ne logeront pas grand chose… Et pour les répertoires, il faudra donner le droit d’écriture au propriétaire si le répertoire reçoit des uploads ou si php créé de nouveaux fichiers à l’intérieur par exemple, donc droits à 755.

Propriétaire, groupe et autres…

On parle depuis tout à l’heure de permissions accordées à trois niveaux d’utilisateurs, le propriétaire (celui qui a créé le fichier/répertoire, ou qui a été déclaré propriétaire à posteriori avec la commande chown). Ce qui implique, vous l’avez compris, qu’il est d’une part important de bien configurer les droits, mais d’autre part, qu’il faut aussi veiller à ne pas mettre n’importe quel utilisateur en tant que propriétaire !

En effet, la plupart du temps, le propriétaire a 7 (tous les droits), donc si votre propriétaire est le serveur, Apache par exemple (en général c’est l’utilisateur www-data sur les Debian et dérivés), il pourra facilement modifier vos fichiers et cela facilitera grandement le travail d’un attaquant ayant trouvé une faille sur votre serveur.

Plusieurs politiques peuvent donc être mises en place. La plupart du temps, le propriétaire des répertoires et fichiers est un utilisateur distinct des processus Apache (ou autre serveur) et appartenant aussi à un autre groupe (www-data est aussi le groupe correspondant au processus Apache). Par exemple l’utilisateur Linux sous lequel est loggué le développeur.

On peut déclarer root comme propriétaire, seul root aura donc les droits de propriétaire (root a de toute façon déjà tous les droits sur l’ensemble des répertoires du serveur). Il faudra alors être root pour faire ce que les autres et/ou le groupe n’ont pas le droit de faire.

On peut aussi n’accorder que des droits succins au propriétaire – les mêmes que ceux des « autres » – dans ce cas, il faudra passer en root pour éditer, supprimer etc, le fichier/répertoire.

J’ai parlé ici des utilisateurs, mais la même logique s’applique bien entendu aux groupes, bien qu’ils ne soient souvent pas pris en compte dans l’hébergement, ne laissez pas à un groupe (www-data au hasard) la possibilité de faire n’importe quoi ! Pour toutes les commandes relatives à l’administration des droits, des utilisateurs et des groupes, je vous recommande mon article sur l’administration des systèmes Linux.

J’espère que ce petit article aura su vous éclairer sur la gestion des droits pour votre hébergement ! N’hésitez pas à me signaler toute erreur ou omission.

Il n'y a pas encore de commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *