Filesystem Hierarchy Standard
Filesystem Hierarchy Standard (« norme de la hiérarchie des systèmes de fichiers », abrégé en FHS) définit l'arborescence et le contenu des principaux répertoires des systèmes de fichiers des systèmes d'exploitation GNU/Linux et de la plupart des systèmes Unix.
Pour les articles homonymes, voir FHS.
La version actuelle est la 3.0 et fut publiée le 3 juin 2015[1].
Présentation générale
La standardisation d'une hiérarchie de système de fichiers a commencé en août 1993. Le FSSTND (Filesystem Standard) est un standard sur la hiérarchie de système de fichiers spécifique à GNU/Linux ; la première version date du . Les versions suivantes datent des et .
En 1996, la définition de ce standard a été généralisée aux différents Unix et à leurs dérivés, en accord avec les membres de la communauté des développeurs BSD. Ce standard est alors renommé Filesystem Hierarchy Standard.
Initialement, le FHS est maintenu par le Free Standards Group (en) qui compte parmi ses membres Hewlett-Packard, Red Hat, IBM, Dell et plusieurs autres. Résultat d'une fusion entre le Free Standards Group et l'Open Source Development Labs, la Fondation Linux a pris le relais en 2007.
La vaste majorité des distributions GNU/Linux ne respectent pas strictement le standard, même celles développées par des membres du Free Standards Group (par exemple, le répertoire /srv/).
- Un répertoire
/run
est déjà utilisé et proposé[2] pour la prochaine version du FHS par plusieurs distributions majeures dont Fedora[3], SUSE, Debian[4] et Ubuntu[5] afin notamment de centraliser les fichiers résidant en mémoire, de simplifier la séquence de démarrage et aussi faciliter la mise en place d'un système monté en lecture seule.- Exemples de changements :
/dev/.*
→/run/*
/dev/shm
→/run/shm
/var/lock
→/run/lock
/var/run
→/run
/tmp
→/run/tmp
- Exemples de changements :
De plus, d'autres versions d'Unix ont une approche complètement différente :
Arborescence des répertoires
Répertoire | Description | Exemple d'implémentation de la norme |
---|---|---|
/bin/ | Doit contenir toutes les commandes de base nécessaires au démarrage et à l'utilisation d'un système minimaliste (par exemple : cat, ls, cp, sh) excluant les commandes systèmes et celles réservées aux administrateurs (qui sont plutôt placées dans /sbin/). Le nom du répertoire est tiré de l'abréviation de binaires. | |
/boot/ | Chargeur d'amorçage Exemple de fichiers : |
|
/dev/ | Fichiers correspondant (directement ou non) avec un périphérique (abréviation de device) | Exemple d'implémentation
|
/etc/ | Fichiers de configuration (et cetera ; rétroacronymie : abréviation de editable text configuration, soit configuration éditable en mode texte en français). | |
/etc/opt/ | Fichiers de configuration pour les applications installées dans /opt | |
/etc/X11/ | Ce répertoire contient les fichiers de configuration pour X11. |
N.B. : Le client et le serveur X11 peuvent être sur deux ordinateurs différents. Le serveur peut ne pas avoir de carte graphique.
|
/etc/sgml/ | Fichiers de configuration pour SGML. | Sans objet le plus souvent |
/etc/xml/ | Fichiers de configuration pour XML. | |
/home/ | Répertoires des utilisateurs (exemple : /home/dupont). Recommandé mais optionnel, car certains systèmes avec beaucoup d'utilisateurs (notamment via NFS) doivent utiliser une structure différente. | |
/lib/ | Bibliothèques logicielles nécessaires pour les exécutables de /bin/ et /sbin/ (abréviation de libraries, soit bibliothèques en français). | |
/lib<qual>/ | Bibliothèques logicielles essentielles dans un format alternatif. Ces répertoires sont optionnels mais, s'ils existent, leurs noms doivent respecter certaines exigences. | |
/mnt/ | Point de montage pour les systèmes de fichiers temporaires (abréviation de mount ou point de montage). | |
/media/ | Point de montage pour les médias amovibles (apparu dans FHS-2.3). | Parmi les médias amovibles, il y a notamment les CD-ROM et les clés USB. |
/opt/ | Logiciels optionnels | Logiciels non inclus dans la distribution et installés manuellement pour tous les utilisateurs. |
/proc/ | Système de fichiers virtuel documentant le noyau et les différents processus (abréviation de processes, soit processus en français). | |
/root/ | Répertoire de l'Utilisateur root (optionnel mais fortement recommandé). | |
/sbin/ | Exécutables pour les administrateurs (abréviation de system binaries, soit binaires système en français). | |
/srv/ | Données pour les services hébergés sur le système. Habituellement le contenu web statique ou les fichiers d'un serveur FTP, une base de données… | |
/tmp/ | Fichiers temporaires (voir aussi /var/tmp et /run/tmp). Est généralement vidé à chaque démarrage et possède le sticky bit. | |
/usr/ | Contient certains répertoires semblables à ceux présents à la racine mais qui ne sont pas nécessaires au fonctionnement minimal du système (usr est l'acronyme de « UNIX System Resources »). | |
/usr/bin/ | Binaires exécutables qui ne sont pas déjà présents dans /bin et donc pas indispensables à un système minimaliste. | |
/usr/include/ | Entêtes des bibliothèques partagées | |
/usr/lib/ | Bibliothèques partagées | |
/usr/lib<qual>/ | Bibliothèques partagées dans un format alternatif (optionnel) | |
/usr/sbin/ | Binaires pour l'administrateur qui ne sont pas déjà fournis par /sbin | |
/usr/share/ | Fichiers indépendants de la plateforme (non binaires) | La documentation : |
/usr/src/ | Optionnel. Code source divers, généralement limité au noyau et aux bibliothèques système. FHS 2.2 demandait que toutes les sources soient dans ce répertoire, ce que certains Unix continuent de faire bien que ce ne soit plus recommandé. | Sources du noyau Linux dans /usr/src/linux/ (spécifique à Linux). |
/usr/X11R6/ | X Window System, X11 version 6. | |
/usr/local/ | Hiérarchie tertiaire pour les données locales, spécifiques à l'ordinateur. | |
/var/ | Ne contient que des répertoires ou liens symboliques vers d'autres répertoires, ces derniers étant destinés à contenir des fichiers variables divers (voir les sous-répertoires pour les détails). L'objectif est de pouvoir monter le répertoire /usr en lecture seule.
|
|
/var/cache/ | Cache pour des données conservées localement, le plus souvent pour des raisons de performance. Si elles sont encore utiles, les applications doivent pouvoir régénérer ou récupérer toutes ces données même si elles sont effacées. |
|
/var/lock/ | Fichiers de verrouillage, permettant de connaître quelles ressources sont en cours d'utilisation (voir aussi /run/lock) | |
/var/log/ | Fichiers de journalisation (logs en anglais). | Exemple sous GNU/Linux : syslog, XFree86.0.log, kern.log, mysql, gdm/:0.log |
/var/mail/ | Boîtes de courriels des utilisateurs. | |
/var/run/ | Fichiers temporaires des logiciels en cours d'exécution (voir aussi /run) | Exemples : PID ou statut des services |
/var/spool/ | Regroupe des répertoires qui contiennent des données en attente de traitement. | File d'attente de fichiers à imprimer par CUPS dans /var/spool/cups/ |
/var/spool/cron/ | Optionnel sauf pour Linux. Contient les informations pour gérer les tâches planifiées. | |
/var/spool/mail/ | Optionnel et est maintenant habituellement un lien symbolique vers /var/mail (le répertoire utilisé par la plupart des Unix). | |
/var/spool/mqueue/ | Courriels en cours de transit sur la machine (optionnel). | Courriels en attente d'envoi vers d'autres serveurs ou pour livraison aux utilisateurs locaux.
Sendmail utilise ce répertoire. |
/var/tmp/ | Fichiers temporaires. Contrairement à /tmp, ils ne doivent pas être automatiquement effacés lors d'un redémarrage. | Attention, car ceci n'interdit pas l'existence d'une tâche cron qui efface périodiquement les vieux fichiers, par exemple ceux qui n'ont pas été accédés depuis plus de 30 jours. |
Notes et références
Voir aussi
- hier(7) - Linux man page : La page de manuel qui décrit toute la hiérarchie (accessible aussi avec la commande shell man hier)
Liens externes
- Portail de l’informatique
- Portail GNU/Linux
- Portail des logiciels libres