Accueil > Boîtes à outils > Sécurité et piratage > Les droits d’accès

Les droits d’accès

Ouvaton héberge vos sites sur des serveurs mutualisés : c’est à dire que plusieurs centaines de personnes se partagent les mêmes machines.

Sur les serveurs d’Ouvaton, les utilisateurs ont chacun leur petit dossier perso dans lequel sont entreposés leurs fichiers. On appelle généralement ce dossier perso votre répertoire racine, ou votre répertoire utilisateur.

Chez Ouvaton, comme sur la majorité des systèmes informatiques (Linux, Unix, FreeBSD, Mac, ...) les autorisations d’accès fonctionnent de la façon suivante :

  • chaque dossier ou fichier appartient à un utilisateur ET a un groupe
  • chaque utilisateur peut appartenir à un ou plusieurs groupes
  • les droits d’accès à un fichier sont à trois niveaux : utilisateur, groupe, tout le monde
  • chaque niveau possède 3 actions : lecture (read), écriture (write), execution (execute)

lettres et octal

Il y a deux manières d’écrire les autorisations : les lettres, et des chiffres de 0 à 7 (l’octal).

On a attribué un nombre à chaque action : lecture = 4, écriture = 2, execution = 1. Pour savoir le mode d’un fichier, ou dossier, il suffit d’additionner ces 3 chiffres. Par un exemple, un fichier en 4 sera lisible, mais ni écrivable ni executable (en lettres ça donne r—). Un fichier en 5 (= 4 + 1) sera lisible et executable, mais on ne pourra pas le modifier (c’est à dire écrire dedans), ce qui donne r-x en lettres. Un fichier en 7 (= 4 + 2 + 1) sera lisible, ecrivable et executable, ce qui s’écrira rwx en lettres.

Comme on a trois niveaux d’accès, on utilise trois chiffres : le premier pour l’utilisateur, le second pour le groupe, le dernier pour tout le monde.

Ainsi, un fichier en 700 (rwx------), sera lisible, modifiable, executable par son propriétaire, mais ne pourra ni être lu ni écrit ni exécuté par les membres du groupe auquel il appartient, ni tous les autres utilisateurs de l’ordinateur.

Un fichier en 744 (rwxr—r—) sera lisible, modifiable, executable par son propriétaire, et uniquement lisible par son groupe et tous les autres utilisateurs.

Listing FTP

Vous avez donc compris qu’un fichier en 777 (rwxrwxrwx) est lisible et modifiable par n’importe qui sur le serveur concerné ... laisser n’importe quel utilisateur pouvoir modifier vos fichiers est une très mauvaise idée.

Sur Ouvaton, tous les utilisateurs sont dans le même groupe : c’est à dire que techniquement, un fichier en 770 est modifiable par tous les autres coopérateurs (= mauvaise idée).

chmod et chown

Quand on change les droits d’accès d’un fichier ou répertoire, on dit qu’on chmod un fichier ou répertoire (la commande unix qui fait ça s’appelle chmod, abréviation de change mod).

Quand on change le propriétaire, ou le groupe d’un fichier ou répertoire, on dit qu’on chown (la commande unix s’appelle chown, abréviation de change owner).

Apache et PHP

Le logiciel serveur qui envoie vos pages web à vos visiteurs s’appelle Apache. Lorsque ces pages sont dynamiques (notamment pour le cas de SPIP, WordPress, Joomla, ... ou de sites interactifs que vous avez développés vous-même) Apache lance un module nommé PHP qui va interpréter les commandes PHP de vos pages et envoyer le résultat aux visiteurs.

Apache tourne comme nobody : c’est un utilisateur qui a très peu de pouvoir. En fait, c’est un utilisateur qui ... n’existe pas. Pour que vos fichiers images, pages HTML, fichiers CSS, JS, etc ... puissent être envoyés à vos visiteurs, il faut qu’Apache puisse les lire : il faut donc que vos fichiers soient lisibles par tout le monde.

Par contre, lorsqu’Apache lance PHP pour interpréter vos scripts .php, PHP possède alors votre identité : vos fichiers doivent donc être exécutables par vous, mais pas forcément lisibles par quelqu’un d’autre (vaut mieux pas, en fait).

Moralité

PHP est exécuté avec l’identité du coopérateur, comme les fichiers sont interprétés, il est nécessaire que php puisse lire les scripts, donc minimum 400.

Pour les fichiers statiques, ces fichiers sont lus par Apache, Apache est considéré comme "autre", donc droit 004 au minimum. Pour les répertoires, 001 au minimum.

Pour 1 coopérateur, les autres coopérateurs sont du même groupe, donc il *faut* que les droits de groupe soient à 0 (le 2ème chiffre du chmod).

Conclusion :

  • les répertoires (quelle que soit sa profondeur) doivent être en 705
  • les fichiers php : 600
  • les fichiers statiques : 604
  • les fichiers cgi : 700

Pour les CGI (si vous ne savez pas ce que c’est, c’est que ça ne vous concerne pas) : cgi est exécuté avec l’identité du coopérateur, le fichier doit être exécutable donc droit 100 au minimum, si c’est un script (perl ...) il doit pouvoir être lu, donc 500 au minimum.