Filesystem Hierarchy Standard

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

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.

La version actuelle est la 2.3 et fut publiée le 29 janvier 2004[1].

Présentation générale[modifier | modifier le code]

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 14 février 1994. Les versions suivantes datent des 9 octobre 1994 et 28 mars 1995.

En 1996, la définition de ce standard a été généralisée aux différents Unix et à leurs dérivés (voir Unix-like), en accord avec les membres de la communauté des développeurs BSD. Ce standard est alors renommé Filesystem Hierarchy Standard.

Le FHS est maintenu par le Free Standards Group (en) qui compte parmi ses membres Hewlett-Packard, Red Hat, IBM, Dell et plusieurs autres.

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 dossier /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 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

De plus, d'autres versions d'Unix ont une approche complètement différente :

  • GoboLinux.
  • Mac OS X utilise des noms plus explicites, tels que /Library/, /Applications/ et /Users/.

Arborescence des répertoires[modifier | modifier le code]

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 dossier est tiré de l'abréviation de binaires.
/boot/ Chargeur d'amorçage

Exemple de fichiers :

  • Exemple d'implémentation : Si grub est le chargeur d'amorçage, il y aura le fichier de configuration correspondant grub.conf
/dev/ Fichiers correspondant (directement ou non) avec un périphérique (abréviation de device) Exemple d'implémentation
  • Les fichiers de périphériques :
    • Périphériques physiques
      • IDE (Exemple pour GNU/Linux : /dev/sda, /dev/sdb, /dev/sdc : En effet, dans les versions récentes du noyau Linux, les périphériques IDE ne se nomment plus hdX, mais bel et bien sdX , comme les périphériques SCSI).
      • SCSI ; sous GNU/Linux, cela inclut l'USB et le S-ATA ; exemple : /dev/sda, /dev/sdb, /dev/sdc
      • Les terminaux :
      • Carte réseau (sous GNU/Linux, cela correspond aux interfaces réseau eth0, eth1...)
      • Carte son
      • Périphérique à bande
      • Périphérique série : par exemple modem ou port RS-232.
      • Disquette 3 pouces et demi : sous GNU/Linux, /dev/fd0
  • Liens symboliques
    • Cas typique sous GNU/Linux : /dev/cdrom est un lien symbolique vers le fichier de périphérique correspondant (par exemple : /dev/sr0)
/etc/ Fichiers de configuration (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.

NB : Le client et le serveur X11 peuvent être sur deux ordinateurs différents. Le serveur peut ne pas avoir de carte graphique.

  • Pour les ordinateurs utilisant XFree86, le principal fichier de configuration est XF86Config-4 ou XF86Config selon la distribution.
  • Pour les ordinateurs utilisant Xorg, le principal fichier de configuration est xorg.conf
/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)
/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
/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 dossiers 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 :
  • répertoire man pour les man (sous GNU/Linux : document au format roff compressé)
  • répertoire doc : documentation au format HTML ou autre
/usr/src/
Sources du noyau
/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 dossiers ou liens symboliques vers d'autres dossiers, ces derniers étant destinés à contenir des fichiers variables divers (voir les sous-dossiers pour les détails).
/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 regénérer ou récupérer toutes ces données même si elles sont effacées.
  • Serveur DNS BIND pour diminuer l'utilisation du processeur et accélérer certaines requêtes.
  • Gestionnaires de paquetages tel que APT dans Debian.
  • Tomcat pour conserver divers fichiers générés dynamiquement à partir des fichiers sources.
/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 : PIDs ou statut des services
/var/spool/
Files d'attente des services File d'attente de fichiers à imprimer par CUPS
/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 dossier.

/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[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

  • 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[modifier | modifier le code]