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 »

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 »