3.2. Aperçu de FHS (Filesystem Hierarchy Standard)

Red Hat Enterprise Linux utilise la structure de système de fichiers FHS (de l'anglais Filesystem Hierarchy Standard), un document de collaboration définissant les noms, les emplacements et les permissions de nombreux types de fichiers et répertoires.

Le document FHS actuel est la référence faisant autorité pour tout système de fichiers compatible avec le standard FHS, mais le standard comprend de nombreuses zones indéfinies ou extensibles. Cette section donne un aperçu de la norme et une description des éléments du système de fichiers qui ne sont pas couverts par celle-ci.

La conformité avec la norme a de nombreuses implications, mais les deux aspects les plus importants sont la compatibilité avec d'autres systèmes également conformes et la possibilité de monter une partition /usr/ en lecture-seule car elle contient des fichiers exécutables courants et n'a pas pour vocation d'être modifiée par les utilisateurs. Du fait que le répertoire /usr/ peut être monté en lecture-seule, il est possible de le monter depuis le CD-ROM ou depuis un autre ordinateur par le biais d'un montage NFS en lecture-seule.

3.2.1. Organisation de FHS

Les répertoires et les fichiers mentionnés ici sont un petit sous-ensemble de ceux qui sont spécifiés par le document FHS. Consultez le document FHS le plus récent pour obtenir des renseignements complets.

La norme complète est disponible en ligne à l'adresse suivante : http://www.pathname.com/fhs/.

3.2.1.1. Le répertoire /boot/

Le répertoire /boot/ contient des fichiers statiques requis pour démarrer le système, comme le noyau Linux. Ces fichiers sont essentiels pour que le système démarre correctement.

AvertissementAvertissement
 

Ne supprimez le répertoire /boot/ sous aucun prétexte. En effet, sa suppression rendrait impossible le démarrage de votre système.

3.2.1.2. Le répertoire /dev

Le répertoire /dev contient des entrées de système de fichiers représentant des périphériques connectés au système. Ces fichiers sont essentiels au bon fonctionnement du système.

3.2.1.3. Le répertoire /etc

Le répertoire /etc/ est réservé aux fichiers de configuration locaux sur votre ordinateur. Aucun fichier binaire ne devrait aller dans /etc/. Tous les fichiers binaires qui se trouvaient auparavant dans /etc/ devraient aller dans /sbin/ ou, si possible, dans /bin/.

Les répertoires X11 et skel doivent être des sous-répertoires du répertoire /etc :

/etc
  |- X11/
  |- skel/

Le répertoire /etc/X11/ est destiné aux fichiers de configuration du système X Window, tels que XF86Config. Le répertoire /etc/skel/ est consacré aux fichiers utilisateur "squelette", utilisés pour remplir un répertoire personnel lors de la création d'un nouvel utilisateur.

3.2.1.4. Le répertoire /lib

Le répertoire /lib/ ne devrait contenir que les bibliothèques nécessaires à l'exécution de fichiers binaires dans /bin/ et /sbin/. Ces images de bibliothèques partagées sont particulièrement importantes pour le démarrage du système et l'exécution de commandes dans le système de fichiers racine.

3.2.1.5. Le répertoire /mnt

Le répertoire /mnt/ se réfère aux systèmes de fichiers montés de façon temporaire, tels que les CD-ROM et les disquettes.

3.2.1.6. Le répertoire /opt

Le répertoire /opt fournit un endroit où stocker des paquetages de logiciels d'applications statiques de grande taille.

Un paquetage qui place des fichiers dans le répertoire /opt/ crée un répertoire portant le même nom que le paquetage. Celui-ci contient les fichiers qui autrement seraient éparpillés dans tout le système de fichiers, offrant ainsi à l'administrateur système une façon facile de déterminer le rôle de chaque fichier d'un paquetage donné.

Par exemple, si sample était le nom d'un paquetage logiciel situé dans le répertoire /opt/, tous ses fichiers pourraient être placés dans des répertoires à l'intérieur de /opt/sample/, tels que /opt/sample/bin/ pour les fichiers binaires et /opt/sample/man/ pour les pages de manuel.

Les paquetages de grande taille qui contiennent de nombreux sous-paquetages différents exécutant chacun une tâche spécifique, se trouvent également dans le répertoire /opt/, leur donnant ainsi une façon standard de s'organiser. Pour reprendre notre exemple, le paquetage sample pourrait contenir différents outils allant chacun dans un sous-répertoire qui lui est propre, comme /opt/sample/tool1/ et /opt/sample/tool2/, qui à son tour peut avoir ses propres répertoires bin/, man/ et autres répertoires semblables.

3.2.1.7. Le répertoire /proc

Le répertoire /proc contient des fichiers spéciaux qui extraient des informations à partir du noyau ou envoient des informations au noyau.

Étant donné l'immense variété de données disponibles dans /proc et les différentes façons dont ce répertoire peut être utilisé pour communiquer avec le noyau, un chapitre entier a été consacré à ce sujet. Pour obtenir de plus amples informations, consultez le Chapitre 5.

3.2.1.8. Le répertoire /sbin

Le répertoire /sbin/ est conçu pour les fichiers exécutables qui sont utilisés par le super-utilisateur. Les fichiers exécutables dans /sbin/ ne sont utilisés que pour démarrer et exécuter des opérations de remise en état du système. FHS indique ce qui suit :

"/sbin/ contient généralement des fichiers essentiels pour le démarrage, la restauration, et/ou la réparation du système, en plus des fichiers binaires figurant dans /bin. Tout ce qui est exécuté après /usr/ est supposé monté (lorsqu'il n'y a pas de problème) et doit être placé dans /usr/sbin. Les programmes d'administration système installés localement doivent être placés dans le répertoire /usr/local/sbin."

Au minimum, les programmes suivants doivent être présents dans /sbin :

arp, clock,
halt, init, 
fsck.*, grub
ifconfig, lilo, 
mingetty, mkfs.*, 
mkswap, reboot, 
route, shutdown, 
swapoff, swapon

3.2.1.9. Le répertoire /usr

Le répertoire /usr/ est destiné aux fichiers pouvant être partagés sur l'ensemble d'un site. Le répertoire /usr/ a généralement sa propre partition et est monté en lecture-seule. Les répertoires suivants doivent être des sous-répertoires de /usr/ :

/usr
  |- bin/
  |- dict/
  |- doc/
  |- etc/
  |- games/
  |- include/
  |- kerberos/
  |- lib/
  |- libexec/	    
  |- local/
  |- sbin/
  |- share/
  |- src/
  |- tmp -> ../var/tmp/
  |- X11R6/

Sous le répertoire /usr/, le répertoire bin/ contient des fichiers exécutables, dict/ contient des pages de documentation non conformes à FHS, etc/ contient des fichiers de configuration pour l'ensemble du système, games est pour les jeux, include/ contient des fichiers d'en-tête C, kerberos contient des fichiers binaires et d'autres éléments pour Kerberos et finalement, lib/ contient des fichiers objet et des bibliothèques qui ne sont pas destinés à être utilisés directement par les utilisateurs ou les scripts shell. Le répertoire libexec/ contient de petits programmes d'aide appelés par d'autres programmes, sbin/ est pour les fichiers binaires d'administration système (ceux qui n'appartiennent pas à /sbin/), share/ contient des fichiers qui ne sont pas spécifiques à l'architecture, src/ est pour le code source et X11R6/ est pour le système X Window (XFree86 sur Red Hat Enterprise Linux).

3.2.1.10. Le répertoire /usr/local

FHS indique ce qui suit :

"La hiérarchie /usr/local est destinée à être utilisée par l'administrateur système lors de l'installation locale du logiciel. Elle doit être à l'abri de toute réécriture lors de la mise à jour du logiciel système. Elle peut être utilisée pour des programmes et des données partageables entre un groupe d'ordinateurs, mais ne figurant pas dans /usr."

Le répertoire /usr/local est semblable, de par sa structure, au répertoire /usr. Il contient les sous-répertoires suivants, qui sont semblables, de par leur fonction, à ceux qui se trouvent dans le répertoire /usr :

/usr/local
       |- bin/
       |- doc/
       |- etc/
       |- games/
       |- include/
       |- lib/
       |- libexec/
       |- sbin/
       |- share/
       |- src/

Dans Red Hat Enterprise Linux, l'utilisation prévue pour /usr/local/ est légèrement différente de celle qui est spécifiée par FHS. FHS indique que /usr/local/ devrait se trouver là où vous stockez des logiciels devant rester à l'abri des mises à jour du logiciel système. Du fait que les mises à jour du logiciel s'effectuent en toute sécurité à l'aide du gestionnaire RPM (Red Hat Package Manager), il ne vous est pas nécessaire de protéger des fichiers en les plaçant dans /usr/local/. Il vous est plutôt recommandé d'utiliser /usr/local/ pour y placer les logiciels locaux de votre ordinateur.

Par exemple, si le répertoire /usr est monté en tant que partage NFS en lecture-seule à partir d'un hôte distant, il est toujours possible d'installer un paquetage ou sous le répertoire /usr/local.

3.2.1.11. Le répertoire /var

Comme FHS exige que Linux soit en mesure de monter /usr/ en lecture-seule, tous les programmes qui écrivent des fichiers journaux ou ont besoin de répertoires spool/ ou lock/ devraient probablement les écrire dans le répertoire /var/. FHS indique que /var/ est pour :

...les fichiers de données variables. Ceci comprend les répertoires et fichiers spool, les données administratives et de journalisation, de même que les fichiers transitoires et temporaires.

Les répertoires suivants peuvent être des sous-répertoires de /var/ :

/var
  |- account/
  |- arpwatch/
  |- cache/
  |- crash/
  |- db/
  |- empty/
  |- ftp/
  |- gdm/
  |- kerberos/
  |- lib/
  |- local/
  |- lock/
  |- log/
  |- mail -> spool/mail/
  |- mailman/
  |- named/
  |- nis/
  |- opt/
  |- preserve/
  |- run/
  +- spool/
       |- at/
       |- clientmqueue/
       |- cron/
       |- cups/
       |- lpd/
       |- mail/
       |- mqueue/
       |- news/
       |- postfix/ 
       |- repackage/
       |- rwho/
       |- samba/ 
       |- squid/
       |- squirrelmail/
       |- up2date/ 
       |- uucppublic/
       |- vbox/
  |- tmp/
  |- tux/
  |- www/
  |- yp/

Les fichiers journaux tels que messages et lastlog vont dans le répertoire /var/log/. Le répertoire /var/lib/rpm/ contient les bases de données système RPM. Les fichiers lock vont dans le répertoire /var/lock/, généralement dans des répertoires spécifiques aux programmes qui utilisent ces fichiers. Le répertoire /var/spool/ comprend des sous-répertoires pour les programmes ayant besoin de stocker des fichiers de données.