Le Système de fichiers Linux
Mise à jour :
Le système de fichiers sous Linux est au cœur du fonctionnement de tout serveur ou poste de travail. Il permet d’organiser, de stocker et de gérer efficacement les données et les ressources du système. Ce guide a pour objectif de vous donner une vision claire de sa structure hiérarchique, des rôles des différents répertoires, des types de fichiers existants, ainsi que des mécanismes de gestion des permissions.
Structure hiérarchique du système de fichiers
Le système de fichiers Linux est organisé selon une structure hiérarchique
qui commence toujours par le répertoire racine /
. Cette arborescence forme un
ensemble cohérent de répertoires et sous-répertoires qui permet de classer
toutes les données et ressources du système.
Chaque fichier ou répertoire est situé quelque part sous la racine /
, ce qui
signifie qu’il existe un chemin unique pour accéder à chaque élément. Cette
organisation permet de centraliser l’accès aux fichiers, qu’ils soient
stockés localement ou sur des supports distants (par exemple, des systèmes de
fichiers réseau montés sous un répertoire spécifique).
L’arborescence des principaux répertoires système
L’arborescence des principaux répertoires système dans un système d’exploitation Linux suit une structure standardisée qui organise les fichiers et les répertoires de manière logique et cohérente. Voici une description des principaux répertoires système :
Répertoirebin/ -> usr/bin/
- …
Répertoireboot/
- …
Répertoiredev/
- …
Répertoireetc/
Répertoiressh/
- …
Répertoiresystemd/
- …
- …
Répertoirehome/
Répertoireuser1/
- …
Répertoirelib/ -> usr/lib/
- …
Répertoirelib32/ -> usr/lib32/
- …
Répertoirelib64/ -> usr/lib64/
- …
Répertoirelibx32/ -> usr/libx32/
- …
Répertoiremedia/
- …
Répertoiremnt/
- …
Répertoireopt/
- …
Répertoireproc/
- …
Répertoirerecovery/
- …
Répertoireroot/
- …
Répertoirerun/
- …
Répertoiresbin/ -> usr/sbin/
- …
Répertoiresrv/
- …
Répertoiresys/
- …
Répertoiretmp/
- …
Répertoireusr/
- …
Répertoirevar/
Répertoirelog/
- …
- …
-
/
(root) : Le répertoire racine est le point de départ de l’arborescence du système de fichiers Linux. Tous les autres répertoires et fichiers sont situés sous la racine. Il est généralement représenté comme/
dans les chemins absolus. -
/bin
(Binaires système) : Ce répertoire contient les binaires système essentiels nécessaires au démarrage et à la réparation du système. Vous y trouverez des commandes de base telles quels
,cp
,mv
,mkdir
,rm
, etc. -
/boot
(Démarrage) : Les fichiers nécessaires au processus de démarrage du système se trouvent ici, y compris le noyau Linux et les fichiers de configuration du gestionnaire de démarrage (comme GRUB ou LILO). -
/dev
(Périphériques) : Ce répertoire contient les fichiers spéciaux qui représentent les périphériques matériels du système, tels que les disques, les lecteurs de CD-ROM, les ports série, etc. -
/etc
(Configuration) : Les fichiers de configuration du système sont stockés dans ce répertoire. Il contient des fichiers de configuration pour le noyau, le réseau, les services, les utilisateurs et bien d’autres. -
/home
(Répertoires personnels) : Ce répertoire contient les répertoires personnels des utilisateurs du système. Chaque utilisateur a généralement son propre sous-répertoire sous/home
pour stocker ses fichiers personnels. -
/lib
(Bibliothèques partagées) : Les bibliothèques partagées essentielles nécessaires au fonctionnement du système sont stockées ici. Ces bibliothèques sont utilisées par les programmes pour accéder aux fonctionnalités du système. -
/media
(Périphériques montés) : Les supports amovibles tels que les clés USB, les disques durs externes et les CD/DVD sont montés automatiquement sous ce répertoire lorsqu’ils sont connectés au système. -
/mnt
(Points de montage) : Ce répertoire est utilisé pour monter temporairement d’autres systèmes de fichiers, tels que des disques réseau ou d’autres partitions de disque. -
/opt
(Options) : Les logiciels tiers et les applications optionnelles peuvent être installés dans ce répertoire. Il est souvent utilisé pour les logiciels non inclus dans la distribution Linux de base. -
/proc
(Système de fichiers proc) : Ce répertoire est un système de fichiers virtuel qui fournit des informations en temps réel sur les processus en cours d’exécution et d’autres informations relatives au noyau. -
/root
(Répertoire personnel du super-utilisateur) : C’est le répertoire personnel du superutilisateur (root). Il est différent du répertoire personnel des autres utilisateurs. -
/sbin
(Binaires système système) : Ce répertoire contient des binaires système essentiels, principalement destinés à être utilisés par le super-utilisateur (root) pour la gestion du système. -
/srv
(Données des services) : Ce répertoire est utilisé pour stocker les données spécifiques aux services fournis par le système, tels que les fichiers de données des serveurs web. -
/tmp
(Répertoire temporaire) : Ce répertoire est utilisé pour stocker des fichiers temporaires créés par les utilisateurs et les applications. Les fichiers temporaires sont généralement supprimés lors du redémarrage. -
/usr
(Ressources système) : Ce répertoire contient des données et des programmes qui ne sont pas nécessaires au démarrage du système, mais qui sont utilisés par les utilisateurs et les applications, y compris les binaires, les bibliothèques, la documentation, etc. -
/var
(Données variables) : Les données variables telles que les journaux système, les fichiers de base de données et les fichiers temporaires du système sont stockées ici. Ce répertoire peut contenir des données qui changent fréquemment. -
/var/log
(Journaux systèmes) : Le répertoire /var/log est un répertoire important dans l’arborescence des répertoires système Linux. Il est spécifiquement destiné au stockage des fichiers journaux du système, également appelés “logs”. Les fichiers journaux enregistrent des informations sur divers événements et activités du système, ce qui est essentiel pour la surveillance, le dépannage et la gestion du système.On y trouve :
- Le fichier
/var/log/boot.log
, enregistrent des informations sur le processus de démarrage du système. - Le fichier
/var/log/messages
ou/var/log/syslog
(selon la distribution) contiennent des informations générales sur l’état du système, y compris les messages du noyau, les informations sur le matériel, les messages de démarrage, etc. - Le fichier
/var/log/auth.log
ou /var/log/secure
(selon la distribution) enregistre les informations d’authentification des utilisateurs, notamment les connexions réussies et les tentatives de connexion échouées. - Le fichier
/var/log/dpkg.log
(sur les systèmes basés sur Debian) ou/var/log/yum.log
(sur les systèmes basés sur Red Hat) enregistre les opérations de gestion de paquets, telles que l’installation, la mise à jour ou la suppression de logiciels. - De nombreux autres fichiers créés par les services système et logiciels
tiers. Par exemple, Apache peut avoir ses journaux dans
/var/log/apache2/
et MySQL peut avoir ses journaux dans/var/log/mysql/
…
- Le fichier
Cette structure d’arborescence des répertoires système est cohérente sur la plupart des distributions Linux, bien que certaines distributions puissent avoir des répertoires supplémentaires ou des variations mineures dans la structure. Elle permet d’organiser efficacement les fichiers et les répertoires du système, facilitant ainsi la gestion et l’accès aux ressources système.
Les permissions dans le système de fichiers Linux
La gestion des permissions ou droits dans le système de fichiers Linux est un élément essentiel de la sécurité du système. Linux utilise un système de contrôle d’accès basé sur les permissions pour déterminer qui peut accéder aux fichiers et aux répertoires, qui peut les modifier et qui peut les exécuter. Cela se fait principalement à l’aide de trois types de permissions : lecture, écriture et exécution, pour trois catégories d’utilisateurs : le propriétaire, le groupe et les autres.
Voici une explication détaillée de la gestion des permissions dans le système de fichiers Linux :
Les types de permissions
- Lecture (r) : Permission de lire le contenu d’un fichier ou de lister le contenu d’un répertoire.
- Écriture (w) : Permission de modifier le contenu d’un fichier ou de créer, supprimer et renommer des fichiers dans un répertoire.
- Exécution (x) : Permission d’exécuter un fichier (dans le cas des fichiers exécutables) ou d’accéder à un répertoire (important !).
Les Catégories d’utilisateurs
- Le Propriétaire (u) : L’utilisateur qui a créé ou possède le fichier ou le répertoire.
- Le Groupe (g) : Un groupe d’utilisateurs auquel le fichier ou le répertoire est attribué. Les membres du groupe ont les mêmes permissions que le groupe.
- Les Autres (o) : Tous les autres utilisateurs du système qui ne sont ni le propriétaire ni les membres du groupe. Ces permissions sont également appelées “permissions publiques”.
Les Attributs spéciaux
- Sticky bit (t) : Le bit sticky peut être attribué à un répertoire pour empêcher la suppression de fichiers par des utilisateurs autres que le propriétaire, même si ces utilisateurs ont les permissions d’écriture sur le répertoire. C’est couramment utilisé pour les répertoires temporaires.
- Setgid (s) : Lorsqu’un répertoire a le bit setgid activé, les fichiers créés dans ce répertoire héritent du groupe du répertoire parent, au lieu du groupe de l’utilisateur qui les crée.
- Setuid (s) : Lorsqu’un fichier exécutable a le bit setuid activé, il s’exécute avec les permissions de l’utilisateur propriétaire du fichier, plutôt qu’avec les permissions de l’utilisateur qui l’exécute. Cela peut être utilisé pour permettre à des utilisateurs ordinaires d’exécuter des commandes avec des privilèges spécifiques.
Les formats d’écriture des permissions
On distingue deux modes d’écriture des permissions le mode octal et le symobolique. Le mode octal est celui le plus couramment utilisé une fois compris.
Le mode octal
Le mode octal des permissions est une manière concise de représenter les permissions d’un fichier ou d’un répertoire dans le système de fichiers Linux en utilisant des chiffres octaux (base 8). Il est couramment utilisé pour définir rapidement et précisément les permissions en combinant les droits de lecture (4), d’écriture (2) et d’exécution (1) pour chaque catégorie d’utilisateurs (propriétaire, groupe, autres).
Voici comment fonctionne le mode octal des permissions :
Chaque catégorie d’utilisateurs (propriétaire, groupe, autres) est représentée par une combinaison de trois chiffres octaux :
- Le premier chiffre représente les permissions du propriétaire.
- Le deuxième chiffre représente les permissions du groupe.
- Le troisième chiffre représente les permissions pour les autres utilisateurs.
Les chiffres octaux sont utilisés pour attribuer des valeurs aux droits de lecture, d’écriture et d’exécution :
- Lecture (4) : Représenté par le chiffre 4, indique que l’utilisateur a la permission de lire le fichier ou de lister le contenu du répertoire.
- Écriture (2) : Représenté par le chiffre 2, indique que l’utilisateur a la permission d’écrire ou de modifier le fichier ou de créer, supprimer et renommer des fichiers dans le répertoire.
- Exécution (1) : Représenté par le chiffre 1, indique que l’utilisateur a la permission d’exécuter un fichier (dans le cas des fichiers exécutables) ou d’accéder à un répertoire.
Pour définir les permissions, vous attribuez la somme des valeurs numériques correspondantes aux droits dont vous avez besoin pour chaque catégorie d’utilisateurs.
Par exemple, si vous souhaitez attribuer des droits de lecture et d’exécution au
propriétaire, des droits de lecture au groupe et des droits de lecture aux
autres, vous obtenez la valeur octale 5 pour le premier chiffre, 4 pour le
deuxième chiffre et 4 pour le troisième chiffre. En mode octal, cela s’écrit
544
. Si vous souhaitez attribuer tous les droits au propriétaire, mais
uniquement les droits de lecture aux autres, vous obtenez la valeur octale 7
pour le premier chiffre et 4 pour les deuxième et troisième chiffres. En mode
octal, cela s’écrit 744
.
Le format symbolique
Le format symbolique permet de représenter les permissions dans le système de fichiers Linux. Il utilise des lettres et des symboles pour représenter les permissions. Les permissions sont spécifiées pour le propriétaire, le groupe et les autres utilisateurs, ainsi que pour les types de fichiers spéciaux (comme les fichiers exécutables et les liens symboliques).
Le format symbolique des permissions comprend les éléments suivants :
- Propriétaire (u) : Représenté par la lettre “u”. Les permissions du propriétaire sont définies avec les lettres “r” pour la lecture (read), “w” pour l’écriture (write) et “x” pour l’exécution (execute).
- Groupe (g) : Représenté par la lettre “g”. Les permissions du groupe sont définies avec les mêmes lettres que pour le propriétaire : “r” pour la lecture, “w” pour l’écriture et “x” pour l’exécution.
- Autres (o) : Représentés par la lettre “o”. Les permissions pour les autres utilisateurs sont également définies avec les mêmes lettres : “r” pour la lecture, “w” pour l’écriture et “x” pour l’exécution.
- Tous (a) : Représenté par la lettre “a”. Lorsque vous utilisez “a”, vous définissez les permissions pour tous les utilisateurs (propriétaire, groupe et autres) en même temps.
- Négation (-) : Représenté par le symbole ”-”. Vous pouvez utiliser ”-” pour retirer des permissions spécifiques.
Voici quelques exemples d’utilisation du format symbolique des permissions :
- Pour attribuer la permission de lecture et d’exécution au propriétaire, la
permission de lecture au groupe et aucune permission aux autres :
u=rx,g=r,o=
. - Pour retirer la permission d’écriture au groupe et aux autres :
go-w
.
Attributs spéciaux : Il existe également des symboles spéciaux pour représenter des attributs spécifiques comme le sticky bit (t) et le setgid (s).
Commandes pour gérer et afficher les permissions
Gestion des permissions
Il s’agit de la commande chmod
vu
ici.
Affichage des permissions
Vous pouvez afficher les permissions d’un fichier ou d’un répertoire en
utilisant la commande ls -l
. Cela affiche une liste détaillée des fichiers
avec des informations sur les permissions, le propriétaire, le groupe, etc.
Voici un exemple de sortie de la commande ls -l
:
ls -l
-rw-r--r-- 1 utilisateur groupe 1024 nov. 1 15:30 mon_fichier.txtdrwxr-xr-x 2 utilisateur groupe 4096 nov. 1 15:30 mon_repertoire/
Dans cet exemple, les lettres rw-r--r--
représentent les permissions pour le
propriétaire, le groupe et les autres, respectivement.
Le fichier mon_fichier.txt
est modifiable par son propriétaire et accessible
en lecture à tous les autres utilisateurs.
Conclusion
Maintenant que vous savez comment est structuré le système de fichiers sous Linux, vous comprenez le rôle de chaque répertoire clé et la logique hiérarchique qui organise les données et les ressources système. Vous avez également découvert comment fonctionnent les permissions, quelles sont les catégories d’utilisateurs et comment les droits d’accès sont attribués aux fichiers et répertoires. Cette compréhension est indispensable pour naviguer efficacement dans un environnement Linux, assurer la sécurité des données et gérer correctement les accès. Pour approfondir la mise en pratique de ces concepts, vous pouvez consulter le guide dédié aux commandes essentielles sur le site.