Généralités système Linux

Arborescence du système Linux

Table des matières

Introduction



Notre système Linux possède des dossiers et des fichiers.
Chaque dossier a son utilité, et tout n'est pas stocké n'importe comment.
Dans cet article, je vais expliquer les notions de systèmes de fichiers, de racine, et de chemin.

Le système de fichiers, racine, chemin



Notre système de fichiers sous Linux est organisé. Chaque dossier à la racine de l'arborescence a une utilité particulière.

On appelle cela une «arborescence» car schématiquement, nous partons de la racine du système de fichiers, nous parcourons cette arborescence en allant de dossiers en dossiers. (Un peu comme un arbre)

Il n'y a pas d'arbre sans racine ! Donc, tout chemin de fichiers dans le système Linux part de la racine. Cette racine est notée / (slash).

Cette racine est "à peu près" comparable au C:\ de Windows, histoire de faire un grossier parallèle.

A noter, quand on part de la racine puis qu'on parcours les dossiers, l'ensemble de la localisation est appelée chemin.

Il existe 2 représentations d'un chemin :
- Chemin absolu, qui part de la racine : /home/adrien/Documents/Comptes
- Chemin relatif, qui part de l'endroit où on se situe. Exemple, si on se situe dans /home/adrien, un chemin relatif est Documents/Comptes


Un répertoire pour chaque utilisation



Dans cette racine (/), on y trouve un certain nombre de répertoires, bien défini. Chacun à son rôle.

  • / => C'est la racine. Ce dossier est le point de départ de l'arborescence, il contient les répertoires principaux
  • /bin (binaries) => Exécutables essentiels au système, utilisables par tous les utilisateurs (ls pwd cp)
  • /boot => fichiers permettant à Linux de démarrer, tels que le noyau et les fichiers de démarrage (GRUB). Dans /boot/efi est monté la partition EFI pour les systèmes disposant de ce micrologiciel.
  • /dev (device) => Fichiers spéciaux représentant les point d'entrées de tous les périphériques (fichiers spéciaux des disques durs, écrans, partitions, consoles TTY, webcam, clavier, ...)
  • /etc (editing text config) => Contient les fichiers texte nécessaires à la configuration du système et des setvices (XXX.conf, passwd, inittab, fstab)
  • /home => Répertoire personnel des utilisateurs du système
  • /lib (librairies) => contient les bibliothèques partagées essentielles au système lors du démarrage (et modules noyau)
  • /lib64 => idem /lib mais pour les 64bits (parfois, on trouvera lib et lib32. Dans ce cas, lib = 64bits et lib32 = 32bits)
  • /mnt (mount) /media => Là où les ressources peuvent être montées de manière permanente (/media) ou temporaire (/mnt)
  • /opt (optional) => Répertoire générique pour l'installation de programmes installés hors dépôts de la distribution.
  • /proc (process) => Répertoire virtuel ne prenant aucune place sur le disque. Contient des fichiers spéciaux offrant des informations sur le système (noyau, processus).
  • /root => Répertoire personnel du super utilisateur (le répertoire de root n'est pas dans /home, car bien souvent le /home est sur une partition à part. En cas d'échec de montage de /home, root à quand même accès à son répertoire personnel).
  • /run (runtime system) => Contient des informations relatives au système concernant les utilisateurs et les services en cours d'exécution.
  • /sbin (super binaries) => Contient les programmes système essentiels utilisables par l'admin uniquement.
  • /srv (services) => N'est pas présent dans toutes les distributions. C'est un répertoire de données pour divers services (stockage des documents de comptes FTP, ou pages de sites web)
  • /sys => Répertoire virtuel ne prenant aucune place sur le disque. Contient des fichiers spéciaux offrant des informations entre le système et ses composants matériels.
  • /tmp (temporary) => Répertoire fichier temporaires
  • /usr (Unix System Resources) => Contient plusieurs éléments détaillés par sous-dossier ci-dessous.
  • /var (variable) => contient les données variables qui varient en fonction de l'utilisation du système, tels que les fichiers de log, les fichiers de bases de données et les fichiers de mails.


Le dossier /usr est un dossier qui contient des programmes, des données et des documents utilisés par les utilisateurs du système. Il se découpe comme suit :
  • /usr/bin => contient des exécutables et des commandes utilisées par les utilisateurs du système.
  • /usr/include => contient des fichiers d'en-tête utilisés par les compilateurs pour inclure du code dans les programmes.
  • /usr/lib , /usr/lib64 => contient des bibliothèques (librairies) utilisées par les programmes (32 et 64 bits)
  • /usr/local => contient des programmes et des données installées localement sur le système, par un administrateur, non installés par le gestionnaire de paquets
  • /usr/sbin => contient des exécutables et des commandes utilisées par l'admin système
  • /usr/share => contient des données partagées utilisées par les programmes (fichiers de langue, images, polices de caractères ...)
  • /usr/src => contient le code source des programmes installés


Pour être plus précis sur /var, ce dossier est découpé comme suit :
  • /var/cache => contient des données mises en cache par les programmes et le système, telles que les paquets de logiciels téléchargés (apt, yum, dnf, emerge suivant votre distribution)
  • /var/lib => contient des données utilisées par les programmes du système, telles que les bases de données (mysql) par exemple
  • /var/log => contient des fichiers de log, avec un sous dossier par service installé
  • /var/run => contient des fichiers temporaires utilisés par les programmes en cours d'exécution (fichiers .pid, ...)
  • /var/spool => contient des fichiers en attente d'être traités par les programmes système, tels que les impressions et les tâches cron.
  • /var/tmp => contient des fichiers temporaires utilisés par les programmes. Par rapport à /tmp ces fichiers tomporaires ne sont pas épurés automatiquement.



Il est tout à fait possible de créer d'autres dossiers dans la racine (par exemple /data), ce n'est pas interdit. Les dossiers présentés ci-dessus sont ceux qui sont là, par défaut, avec leurs utilité.

Certaines distributions ont appliqué une simplification de l'arborescence :
Tout ce qui était dans /bin a été déplacé dans /usr/bin
Tout ce qui était dans /lib a été déplacé dans /usr/lib
Tout ce qui était dans /lib64 a été déplacé dans /usr/lib64
Tout ce qui était dans /sbin a été déplacé dans /usr/sbin

Des liens symboliques conservent la compatibilité pour d'anciens procgrammes ou scripts :

Code BASH :
ls -l / | egrep "^l"
lrwxrwxrwx.   1 root root     7 25 août  14:45 bin -> usr/bin
lrwxrwxrwx.   1 root root     7 25 août  14:45 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 25 août  14:45 lib64 -> usr/lib64
lrwxrwxrwx.   1 root root     8 25 août  14:45 sbin -> usr/sbin
 


Un projet pour Fedora 40 vise à fusionner /usr/sbin et /usr/bin où tous les binaires sont unifiés dans /usr/bin et où /usr/sbin devient un lien symbolique pour conserver la compatibilité
Cette page a été vue 68663 fois