Permissions des fichiers et répertoires d’un serveur web

Cet article établit une base de travail au niveau des permissions lors de la mise en place d’un serveur web hébergeant plusieurs sites pour plusieurs clients.

Un serveur HTTP peut contenir plusieurs sites, les fichiers de ceux-ci peuvent être gérés par plusieurs utilisateurs, un utilisateur A ayant accès aux fichiers du site A, mais pas à ceux du site B, alors qu’un utilisateur C, aura accès aux fichiers des site A, B et C par exemple.

Ce qui suit ne s’adresse pas à un type de serveur particulier, mais suppose une machine GNU/Linux et un serveur Nginx ou Apache.

Les permissions

Normalement sous Linux, lorsqu’un fichier est créé, il hérite du groupe de l’utilisateur qui l’a créé. Dans le cas de fichiers et répertoires relatifs à un serveur web, il est préférable que lorsqu’un fichier est créé il hérite du groupe du répertoire parent (en général /var/www), pour faire ceci il faut activer le bit SGID (Set Group ID) du répertoire parent.
Pour se rafraichir un peu les neurones au niveau du concept de permissions sous Linux, voir ce billet.

D’un autre coté, pour travailler convenablement avec ses collaborateurs, il faut prendre soin de modifier le umask, le masque de création de fichier par l’utilisateur, qui est général placé à 022 par défaut, c’est-à-dire que lorsqu’un fichier est créé il aura comme permissions 755, ce fichier n’étant pas éditable par le groupe. Changer le umask en 002 va placer les permissions d’un nouveau fichier en 775.

Continue reading « Permissions des fichiers et répertoires d’un serveur web »

Droits Unix : la notation octale

Des chiffres et des lettres

Petite piqure de rappel sur les bases des droits Unix suite à la demande de San Antonio pour le billet sur les droits spéciaux. Plus précisément sur la représentation octale des droits.

Sur les systèmes Unix/Linux/BSD, les droits sur les fichiers sont définis pour le propriétaire, pour les utilisateurs appartenant au groupe et pour les autres utilisateurs. Ils sont représentés – par exemple lorsque l’on invoque la commande ls -l – par une suite de 3 lettres (r,w et x pour respectivement read/lire, write/écrire, execute/exécuter), mais peuvent être représentés par des chiffres, par exemple comme suit :

rw-r--r-- est la même chose que 644

Il s’agit de la représentation octale. Pour être expliquée, il faut partir de la forme binaire des droits, suivant ce schéma :

000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7

On peut associer chaque triplet aux trois entités (propriétaire, groupe, autres) des droits, ainsi, un fichier ayant le droit du propriétaire en lecture et écriture (r w -) sera écrit 110, 1 pour le r, 1 pour le w et 0 pour le flag x qui n’est pas attribué. Le procédé est le même pour les deux autres triplets. Pour l’exemple complet, prenons : r w – r – – r – -, soit 110 100 100.
Ensuite on part du principe que l’on ajoute les chiffres des valeurs binaires des triplets pour obtenir la valeur octale. En continuant sur l’exemple précédent : 110 en binaire vaut 6 en décimal, 100 vaut 4, ainsi nous avons 6 – 4 – 4, simplifié en 644. Notre fichier a les droits 644.

r w -  r - -  r - - = 110 100 100 = 644
rw-rw-r-- = 100 100 100 = 664
r-xr-xr-x = 101 101 101 = 555
rwxr-xr-- = 111 101 000 = 754

Les droits sous linux : setuid, setgid et sticky bit

Petit point sur les droits Unix spéciaux que sont les setuid, setgid et le sticky bit.

Lorsque l’on découvre l’univers d’Unix/Linux/Mac, il y a certaines choses qui ont du mal à passer lorsque l’on débute. Je me souviens par exemple de la difficulté à apprendre le fonctionnement du système des droits sur les fichiers et plus particulièrement n’avoir rien compris des setuid, setgid et sticky bit. Je reparle de ça parce que je viens de perdre pas mal de temps avec un problème sur un développement PHP en cours, et il s’agissait du setgid qui n’était pas accordé à un répertoire. Bref, ce qui suit est un petit rafraîchissement.

Comme dit dans le sous-titre, les setuid, setgid et sticky bit sont des droits dits spéciaux, ils s’ajoutent aux droits classiques (lecture, écriture et exécution) et fonctionnent différemment suivant qu’on les applique sur un fichier ou un répertoire.

Continue reading « Les droits sous linux : setuid, setgid et sticky bit »