Un Guide Détaillé De Linux Filesystem Heirarchy Standard

La structure des répertoires (dossiers) dans les systèmes d’exploitation basés sur Linux suit la norme Linux Filesystem Hierarchy Standard ( FHS ) définie et maintenue par la Linux Foundation. Avoir une norme bien définie permet aux utilisateurs et aux développeurs de logiciels de connaître plus facilement l’emplacement des binaires installés, des fichiers système, des informations système, etc. De cette façon, les applications Linux n’ont pas besoin d’être adaptées à une distribution particulière et peuvent être utilisées universellement. .

Dans cet article, nous examinerons en détail la structure des répertoires sous Linux et discuterons des rôles de tous les répertoires un par un avec des exemples.

Norme De Hiérarchie De Système De Fichiers Linux

La dernière version de FHS a été publiée par Linux Foundation en 2015. Il s’agit de la structure de répertoires conforme à FHS selon elle.

/ (racine)

C’est le début de la hiérarchie du système de fichiers Linux. Tous les chemins de fichiers proviennent de la racine. Les répertoires répertoriés ci-dessus ou les liens symboliques vers ces répertoires sont requis dans / sinon, la structure du fichier n’est pas compatible FSH.

/poubelle

  • Stocke les binaires de commande essentiels qui peuvent être utilisés à la fois par l’administrateur système et l’utilisateur, tels que cat,ls,mv,ps,mount, etc.
  • Ces commandes sont utilisées pour démarrer un système (accéder aux fichiers de démarrage, monter des lecteurs) et peuvent être utilisées lors de la réparation d’un système lorsque les binaires dans /usr ne sont pas disponibles

REMARQUE : Dans la capture d’écran ci-dessus, vous pouvez voir que /bin ne contient pas seulement les binaires essentiels mais aussi ceux non essentiels comme 7z. Pour l’explication complète, consultez la section de fusion /usr

/botte

  • Ce répertoire contient tous les fichiers nécessaires au démarrage du système
  • Cela inclut les fichiers du noyau, initrd, initramfs, bootloader, etc.

/dev

  • Contient des fichiers de périphérique pour tous les périphériques physiques et virtuels montés dans le système.
  • Les fichiers de périphérique ne sont pas des fichiers au sens traditionnel du terme. Ils sont un moyen pour les pilotes de périphériques d’accéder et d’interagir avec ledit périphérique
  • Habituellement, le stockage principal est appelé sda (/dev/sda)

/etc

  • Ce répertoire contient les fichiers de configuration de votre système.
  • Le nom de votre appareil, vos mots de passe, votre configuration réseau, DNS, crontabs, date et heure ..etc sont stockés ici dans des fichiers de configuration.
  • Ce répertoire ne peut contenir aucun fichier exécutable binaire selon FHS.
  • Ces fichiers de configuration affectent tous les utilisateurs du système. Si vous souhaitez apporter des modifications à la configuration d’un utilisateur spécifique, ~/.conf/ doit être utilisé à la place de /etc/

/domicile

  • La page d’accueil contient tous les fichiers personnels spécifiques à l’utilisateur. Il contient des répertoires séparés pour chaque utilisateur qui peuvent être consultés par cd /home/username
  • C’est là que vous faites la plupart de votre travail. Tous les téléchargements, images, musiques, etc. sur votre système se trouvent dans /home.
  • Le fichier de configuration spécifique à l’utilisateur pour chaque application se trouve dans /home//.conf
  • Vous pouvez accéder au répertoire personnel de n’importe quel utilisateur en exécutant cd ~ . S’il n’y a qu’un seul utilisateur sur le système, seul cd ~ fonctionne.

/lib

  • Les bibliothèques sont des fichiers de code standard qui définissent les commandes utilisées dans un langage de programmation. Pendant la compilation, un compilateur recherche ces bibliothèques pour donner un sens au code, tout comme nous pourrions rechercher un dictionnaire pour comprendre le sens des mots en lisant un livre.
  • Ce répertoire contient toutes les bibliothèques nécessaires pour démarrer le système et pour exécuter les commandes dans /bin et /sbin.
  • Cela contient également des modules de noyau qui contrôlent une grande partie du fonctionnement de votre matériel et de vos périphériques
  • Souvent, il existe différentes bibliothèques 32 bits et 64 bits portant le même nom. Pour éviter toute collusion, ces binaires sont conservés dans deux répertoires distincts nommés en conséquence /lib32 et /lib64 .

/médias

  • Ce répertoire contient plusieurs sous-répertoires où le système monte des périphériques amovibles tels que des clés USB.

/mnt

  • Ce répertoire peut être utilisé par un utilisateur pour monter manuellement un périphérique. (par opposition à /media qui n’est utilisé que par le système)
  • La convention actuelle parmi les utilisateurs consiste à créer un sous-répertoire séparé sous /mnt et à monter le périphérique dans ce sous-répertoire, tandis que la tradition plus ancienne consiste à monter le périphérique directement dans /mnt.

/opter

  • /opt contient des bibliothèques et des binaires liés aux packages qui ne sont pas installés par les gestionnaires de packages de votre système mais qui sont installés par des moyens tiers, comme l’utilisation du bouton de mise à jour intégré à l’application de Discord.
  • /opt est une alternative moins populaire à /usr/local . C’est le vendeur qui a décidé où vont les bibliothèques et les binaires, mais généralement des logiciels plus monolithiques et propriétaires comme zoom use /opt .

/Cours

  • Ce répertoire contient les métadonnées de l’appareil depuis le dernier démarrage.
  • Cela inclut les données de tous les processus et démons du système qui ont été exécutés dans la session en cours.
  • Les fichiers sous ce répertoire sont effacés (supprimés ou tronqués) au début du processus de démarrage.

/sbin

  • Tout comme /bin, /sbin contient également des binaires système essentiels. Cependant, ces binaires sont uniquement destinés à être utilisés par un administrateur système plutôt que par un utilisateur normal.
  • Ces binaires sont principalement utilisés pour la gestion des appareils. Par exemple, fdisk, fsck, mkfs, ifconfig, reboot.

REMARQUE : Dans la capture d’écran ci-dessus, vous pouvez voir que /sbin ne contient pas seulement les binaires essentiels mais aussi les non essentiels. Pour l’explication complète, consultez la section de fusion /usr

/srv

  • Vous n’utiliserez ce répertoire que si votre appareil agit en tant que serveur Web, car ce répertoire contient tous les fichiers concernant les serveurs Web.
  • Par exemple, si vous hébergez une connexion FTP, tous les fichiers qui doivent être partagés doivent par défaut aller dans un /srv/ftp.

/tmp

  • Contient les fichiers temporaires des processus en cours d’exécution.
  • Ces données sont également vidées après chaque démarrage.

/proc

  • Tout comme /dev qui fournit des périphériques sous forme de fichiers, ce dossier contient des informations système et des informations sur le noyau sous forme de fichiers.
  • Cela inclut des informations concernant la mémoire, les partitions, le matériel (batterie, température, etc.), tous les modules du noyau chargés, etc.

/sys (spécifique à La Distribution)

  • Il contient des informations conservées de la même manière dans /proc/, mais affiche une vue hiérarchique des informations de périphérique spécifiques en ce qui concerne les périphériques enfichables à chaud.

/var

  • Contient des données variables concernant les processus en cours.
  • Cela inclut les journaux, le cache et les spools pour toutes les applications.
  • Les spools sont les données qui attendent un traitement ultérieur. Par exemple, un document en attente dans la file d’attente de l’imprimante ou un en-tête d’e-mail en attente d’être envoyé.

/lost+found (fonctionnalité Ext4)

  • Bien qu’il ne soit pas répertorié dans le FHS, ce répertoire est automatiquement généré par fsck.
  • Il stocke tous les fichiers orphelins et corrompus dans ce dossier.
  • Cela inclut les fichiers que vous n’avez pas pu enregistrer en raison d’une coupure de courant, les fichiers corrompus en raison d’un échec du processus de mise à niveau, etc.

/root (facultatif)

  • C’est censé être le répertoire personnel de l’utilisateur root, par opposition à /home qui est le répertoire personnel des utilisateurs non root.

/usr

Le répertoire /usr a des origines très intéressantes. Au moment de la formation, il était censé agir comme le répertoire /home, mais lorsque les gens ont manqué d’espace sur /bin, ils ont commencé à stocker les binaires non essentiels dans /usr. Vous pouvez lire toute l’histoire ici.

Au fil du temps, ce répertoire a été conçu pour stocker les binaires et les bibliothèques des applications installées par l’utilisateur. Ainsi, par exemple, alors que bash est dans /bin (puisqu’il peut être utilisé par tous les utilisateurs) et fdisk est dans /sbin (puisqu’il ne doit être utilisé que par les administrateurs), les applications installées par l’utilisateur comme vlc sont dans /usr/bin.

De cette façon, /usr a sa propre hiérarchie, tout comme le / (root) l’a fait.

/usr/bin

  • Il s’agit du répertoire principal des commandes exécutables sur le système.
  • Contient tous les binaires de commande installés par l’utilisateur et
  • Si vous souhaitez exécuter vos scripts à l’aide d’une seule commande, vous les placez généralement dans /usr/bin/

/usr/sbin

  • Celui-ci contient les binaires de commande installés par l’utilisateur qui ne peuvent être utilisés que par les administrateurs système.

/usr/lib

  • Celui-ci contient les bibliothèques essentielles pour les packages dans /usr/bin et /usr/sbin tout comme /lib.

/usr/local

  • Ceci est utilisé pour tous les packages qui sont compilés manuellement à partir des sources par l’administrateur système.
  • Ce répertoire a sa propre hiérarchie avec tous les dossiers bin, sbin et lib qui contiennent les binaires et les applications des logiciels compilés.

/usr/partager

  • Contient plusieurs fichiers divers indépendants de l’architecture
  • Les fichiers man, les listes de mots (dictionnaires) et les fichiers de définition sont tous inclus dans cela.

Le Cas De /usr Merge – Y A-t-il Vraiment Une Différence Entre /bin Et /usr/bin ?

Le besoin de déplacer les fichiers binaires non essentiels vers un dossier différent est historiquement dû à un manque d’espace sur le disque dur /bin. Cependant, c’était en 1971. Aujourd’hui, plus de 50 ans plus tard, nous ne sommes plus confrontés aux mêmes problèmes de taille. Cela a rendu inutiles deux dossiers séparés pour les fichiers binaires par défaut et installés par l’utilisateur. Au fil du temps, cela a également provoqué un méli-mélo dans les systèmes de fichiers, les deux répertoires ayant des binaires redondants, ce qui le rend confus.

Pour cette raison , au fil des ans, de nombreuses distributions (Debian, Fedora, Ubuntu, Arch etc.) ont fusionné /usr/bin et /bin dans le même répertoire.

De même, /usr/sbin – /sbin et /usr/lib – /lib ont été fusionnés dans le même répertoire pour simplifier la structure des répertoires. Maintenant, le dossier /bin n’est qu’un lien symbolique vers le répertoire /usr/bin et il en va de même pour les autres fusions.

/bin , /sbin et /lib (y compris ses variantes) sont liés symboliquement à leurs homologues /usr

Conclusion

Depuis 1993, le Filesystem Hierarchy Standard est la ligne directrice pour les structures de répertoires de type Unix. Il nécessite que la partition du répertoire racine contienne tous les fichiers dont le système a besoin pour démarrer et monter des partitions supplémentaires.