La structure de la hiérarchie des fichiers de Linux ou Filesystem Hierarchy Standard (FHS) définit la structure et le contenu des répertoires dans les systèmes d'exploitation de type Unix.
Dans le FHS, tous les fichiers et répertoires apparaissent sous le répertoire racine /, même s'ils sont stockés sur des périphériques physiques ou virtuels différents.
Certains de ces répertoires n'existent sur un système particulier que si certains sous-systèmes, tels que le système X Window, sont installés.
La plupart de ces répertoires existent dans tous les systèmes d'exploitation UNIX et sont généralement utilisés de la même manière ; cependant, les descriptions qui suivent sont celles utilisées spécifiquement pour le FHS et ne sont pas considérées comme faisant autorité pour les plates-formes autres que Linux.
Le répertoire /boot/ contient les fichiers statiques nécessaires au démarrage du système, tels que le noyau Linux. Ces fichiers sont essentiels pour que le système démarre correctement.
Attention:
Ne supprimez pas le répertoire /boot/. Cela rendrait le système non amorçable.
Le répertoire /dev/ contient des entrées de système de fichiers qui représentent les appareils qui sont connectés au système. Ces fichiers sont essentiels pour le bon fonctionnement du système.
Le répertoire /etc/ contient les entrées du système de fichiers qui représentent les appareils connectés au système. Le répertoire /etc/ est réservé aux fichiers de configuration qui sont locaux à la machine. Aucun binaire ne doit être placé dans le répertoire /etc/.
Tous les binaires qui se trouvaient autrefois dans /etc/ doivent être placés dans /sbin/ ou /bin/.
Les répertoires X11/ et skel/ sont 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 xorg.conf. Le répertoire /etc/skel/ est destiné aux fichiers utilisateurs “squelettes”, qui sont utilisés pour remplir un répertoire d'accueil lors de la création d'un utilisateur.
Le répertoire /lib/ ne doit contenir que les bibliothèques nécessaires à l'exécution des 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 des commandes dans le système de fichiers racine.
Le répertoire /media/ contient des sous-répertoires utilisés comme points de montage pour les supports amovibles, tels que les disquettes 3.5, les CD-ROM et les disques Zip.
Le répertoire /mnt/ est réservé aux systèmes de fichiers montés temporairement, tels que les montages de systèmes de fichiers NFS. Pour tous les supports amovibles, utilisez le répertoire /media/.
Note:
Ce répertoire ne doit pas être utilisé par les programmes d'installation.
Le répertoire /opt/ permet de stocker des logiciels d'application statiques de grande taille.
Un paquet qui place des fichiers dans le répertoire /opt/ crée un répertoire portant le même nom que le paquet. Ce répertoire contient à son tour des fichiers qui, autrement, seraient dispersés dans le système de fichiers, ce qui permet à l'administrateur du système de déterminer facilement le rôle de chaque fichier dans un paquet particulier.
Par exemple, si sample est le nom d'un logiciel particulier situé dans le répertoire /opt/, alors tous ses fichiers sont placés dans des répertoires à l'intérieur du répertoire /opt/sample/, tels que /opt/sample/bin/ pour les binaires et /opt/sample/man/ pour les pages de manuel.
Les gros paquets qui englobent de nombreux sous-paquets différents, chacun accomplissant une tâche particulière, sont également situés dans le répertoire /opt/, ce qui donne à ce gros paquet un moyen de s'organiser. De cette façon, notre paquet échantillon peut avoir différents outils qui vont chacun dans leurs propres sous-répertoires, comme /opt/sample/tool1/ et /opt/sample/tool2/, chacun pouvant avoir ses propres répertoires bin/, man/, et autres répertoires similaires.
Le répertoire /proc/ contient des fichiers spéciaux qui extraient ou envoient des informations au noyau.
En raison de la grande variété de données disponibles dans /proc/ et des nombreuses façons dont ce répertoire peut être utilisé pour communiquer avec le noyau, veuillez-vous référer à la doc FHS.
Le répertoire /sbin/ stocke les exécutables utilisés par l'utilisateur root. Les exécutables dans /sbin/ ne sont utilisés qu'au moment du démarrage et effectuent des opérations de récupération du système.
De ce répertoire, le FHS dit :
Au minimum, les programmes suivants devraient être dans /sbin/ :
arp, clock,halt, init, fsck.*, grub, ifconfig, mingetty, mkfs.*, mkswap, reboot, route, shutdown, swapoff, swapon
Le répertoire /srv/ contient des données spécifiques au site desservi par votre système exécutant Linux. Ce répertoire donne aux utilisateurs l'emplacement des fichiers de données pour un service particulier, tel que FTP, WWW ou CVS. Les données qui se rapportent uniquement à un utilisateur spécifique doivent être placées dans le répertoire /home/.
Note:
Veuillez noter que les fichiers de données actuellement situés dans /var/ peuvent être déplacés vers /srv/ dans les prochaines versions.
Le répertoire /sys/ utilise le nouveau système de fichiers virtuel sysfs spécifique au noyau 2.6. Avec la prise en charge accrue des périphériques matériels enfichables à chaud dans le noyau 2.6, le répertoire /sys/ contient des informations similaires à celles contenues dans /proc/, mais affiche une vue hiérarchique des informations spécifiques aux périphériques enfichables à chaud.
Pour voir comment certains périphériques USB et FireWire sont réellement montés, consultez les pages de manuel /sbin/hotplug et /sbin/udev.
Le répertoire /usr/ est destiné aux fichiers qui peuvent être partagés sur plusieurs machines. Le répertoire /usr/ se trouve souvent sur sa propre partition et est monté en lecture seule. Au minimum, les répertoires suivants devraient être des sous-répertoires de /usr/ :
/usr |- bin/ |- etc/ |- games/ |- include/ |- kerberos/ |- lib/ |- libexec/ |- local/ |- sbin/ |- share/ |- src/ |- tmp -> ../var/tmp/ |- X11R6/
Dans le répertoire /usr/, le sous-répertoire bin/ contient les exécutables, etc/ contient les fichiers de configuration du système, games est pour les jeux, include/ contient les fichiers d'en-tête C, kerberos/ contient les binaires et autres fichiers liés à Kerberos, et lib/ contient les fichiers d'objets et les bibliothèques qui ne sont pas conçus pour ê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 destiné aux binaires d'administration système (ceux qui n'appartiennent pas au répertoire /sbin/), share/ contient des fichiers qui ne sont pas spécifiques à l'architecture, src/ est destiné au code source, et X11R6/ est destiné au système X Window.
Selon le FHS :
Le répertoire /usr/local/ a une structure similaire à celle du répertoire /usr/. Il comporte les sous-répertoires suivants, dont l'objectif est similaire à celui du répertoire /usr/ :
/usr/local |- bin/ |- etc/ |- jeux/ |- inclure/ |- lib/ |- libexec/ |- sbin/ |- action/ |- src/
Dans Red Hat Enterprise Linux, l'utilisation prévue pour le répertoire /usr/local/ est légèrement différente de celle spécifiée par le FHS. Le FHS stipule que /usr/local/ doit être l'endroit où sont stockés les logiciels qui doivent être protégés des mises à jour des logiciels du système. Comme les mises à jour de logiciels peuvent être effectuées en toute sécurité avec le RPM Package Manager (RPM), il n'est pas nécessaire de protéger les fichiers en les plaçant dans /usr/local/. Le répertoire /usr/local/ est plutôt utilisé pour les logiciels qui sont locaux à la machine.
Par exemple, si le répertoire /usr/ est monté comme un partage NFS en lecture seule depuis un hôte distant, il est toujours possible d'installer un paquet ou un programme sous le répertoire /usr/local/.
Comme le FHS exige que Linux monte /usr/ en lecture seule, tout programme qui écrit des fichiers de log ou qui a besoin des répertoires spool/ ou lock/ doit les écrire dans le répertoire /var/.
Le FHS stipule que /var/ est pour : …les fichiers de données variables. Cela comprend les répertoires et les fichiers de file d'attente, les données administratives et de journalisation, ainsi que les fichiers transitoires et temporaires.
Vous trouverez ci-dessous certains des répertoires se trouvant dans le répertoire /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/ |- exim/ |- lpd/ |- mail/ |- mailman/ |- mqueue/ |- news/ |- postfix/ |- repackage/ |- rwho/ |- samba/ |- squid/ |- squirrelmail/ |- up2date/ |- uucp |- uucppublic/ |- vbox/ |- tmp/ |- tux/ |- www/ |- yp/
Les fichiers journaux du système, tels que les messages et le lastlog, se trouvent dans le répertoire /var/log/. Le répertoire /var/lib/rpm/ contient les bases de données du système RPM. Les fichiers de verrouillage se trouvent dans le répertoire /var/lock/, généralement dans les répertoires du programme utilisant le fichier. Le répertoire /var/spool/ comporte des sous-répertoires pour les programmes dans lesquels sont stockés les fichiers de données.