Aperçu du FHS

Red Hat adhère au FHS (Filesystem Hierarchy Standard / standard en matière de hiérarchie du système de fichiers), document de collaboration définissant les noms et les emplacements de nombreux fichiers et répertoires. Nous continuerons à respecter cette norme pour garantir la conformité de Red Hat Linux.

Le document FHS actuel est la référence faisant autorité pour tout système de fichiers compatible avec le standard FHS. Toutefois, celui-ci 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 non couverts par celle-ci.

La norme complète peut être consultée à l'adresse suivante :

http://www.pathname.com/fhs

La conformité avec la norme signifie beaucoup, mais les deux aspects les plus importants sont la compatibilité avec d'autres systèmes également conformes et la possibilité de monter la 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 la partition /usr peut être montée en lecture seule, il est possible de monter /usr depuis le CD-ROM ou un autre ordinateur par le biais d'un NFS en lecture seule.

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.

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.

Le répertoire /etc

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

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

/etc
  |- X11
  |- skel

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

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.

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.

Le répertoire /opt

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

Lorsque l'on veut éviter de mettre les fichiers d'un paquetage donné dans le système de fichiers, /opt fournit un système organisationnel logique et prévisible sous le répertoire du paquetage en question. Cela donne à 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 est le nom d'un paquetage logiciel situé dans /opt, alors 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, vont é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, tel que /opt/sample/tool1 et /opt/sample/tool2, qui à son tour peut avoir ses propres répertoires bin, man ou autres répertoires semblables.

Le répertoire /sbin

Le répertoire /sbin est conçu pour les fichiers exécutables qui ne sont utilisés que par les utilisateurs racine. Les fichiers exécutables dans /sbin ne sont utilisés que pour démarrer et monter /usr 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 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 fichiers binaires d'administration du système exclusivement locaux doivent être placés dans le répertoire /usr/local/sbin."

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

arp, clock, getty, halt, init, fdisk,
fsck.*, ifconfig, lilo, mkfs.*, mkswap, reboot,
route, shutdown, swapoff, swapon, update

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 devrait être montable en lecture seule. Les répertoires suivants doivent être des sous-répertoires de /usr :

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

Le répertoire bin contient des fichiers exécutables, doc contient des pages de documentation, 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, enfin, 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 du 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 Linux).

Le répertoire /usr/local

FHS indique ce qui suit :

"La hiérarchie /usr/local est destinée à être installé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
       |- info
       |- lib
       |- man
       |- sbin
       |- src

Le répertoire /var

Comme FHS exige que vous soyez 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
  |- arpwatch
  |- cache
  |- db
  |- ftp
  |- gdm
  |- kerberos
  |- lib
  |- local
  |- lock
  |- log
  |- named
  |- nis
  |- opt
  |- preserve
  |- run
  +- spool
       |- anacron
       |- at
       |- cron
       |- fax
       |- lpd
       |- mail
       |- mqueue
       |- news
       |- rwho
       |- samba
       |- slrnpull
       |- squid
       |- up2date
       |- uucp
       |- uucppublic
       |- vbox
       |- voice
  |- tmp
  |- www
  |- yp

Les fichiers journaux tels que messages et lastlog vont dans /var/log. Le répertoire /var/lib/rpm contient aussi les bases de données système RPM. Les fichiers lock vont dans /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 divers systèmes ayant besoin de stocker des fichiers de données.

/usr/local dans Red Hat Linux

Dans Red Hat Linux, l'usage prévu pour /usr/local est légèrement différent de celui qui est spécifié 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 système à partir de Red Hat s'effectuent en toute sécurité à l'aide du système RPM et de Gnome-RPM, 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, imaginons que vous ayez monté /usr par le biais d'un NFS en lecture seule à partir d'un hôte appelé jake. Si vous désirez installer un paquetage ou un programme, mais que vous n'avez pas l'autorisation d'apporter des modifications dans jake, vous devriez alors l'installer sous /usr/local. De cette façon, si vous réussissez par la suite à convaincre l'administrateur système de jake d'installer le programme dans /usr, vous pourrez le désinstaller du répertoire /usr/local.