Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

Chapitre 2. Structure et maintenance des systèmes de fichiers

La structure des systèmes de fichiers est le niveau le plus bas dans l'organisation d'un système d'exploitation. La manière par laquelle un système d'exploitation interagit avec ses utilisateurs, ses applications et son modèle de sécurité dépend presque toujours de la façon dont le système d'exploitation organise les fichiers sur les périphériques de stockage. Le fait de fournir une structure commune de systèmes de fichiers permet d'assurer que les utilisateurs et les programmes puissent accéder et aux fichiers et écrire dessus.
Les systèmes de fichiers divisent les fichiers en deux catégories logiques :
  • Fichiers partageables vs fichiers non-partageables
  • Fichiers variables vs fichiers statiques
Les fichiers partageables peuvent être accédés localement et par des hôtes à distance ; les fichiers non-partageables sont uniquement disponibles localement. Les fichiers variables, tels que des documents, peuvent être modifiés à tout moment ; les fichiers statiques, tels que des binaires, ne peuvent pas changer sans action de la part de l'administrateur.
Cette manière de catégoriser des fichiers permet de corréler la fonction de chaque fichier avec les permissions assignées aux répertoires qui les contiennent. La manière par laquelle le système d'exploitation et ses utilisateurs interagissent avec un fichier détermine le répertoire dans lequel il sera placé, que ce répertoire soit monté avec des permissions de lecture seule ou de lecture/écriture, ainsi que le niveau d'accès au fichier de chaque utilisateur. Le niveau le plus haut de l'organisation est crucial, l'accès aux répertoires sous-jacents peut être restreint car des problèmes de sécurité pourraient surgir si les règles d'accès n'adhèrent pas à une structure rigide depuis le haut vers le bas.

2.1. Vue d'ensemble du standard de hiérarchie des systèmes de fichiers (FHS, ou « Filesystem Hierarchy Standard »)

Red Hat Enterprise Linux utilise la structure de système de fichiers FHS (Filesystem Hierarchy Standard) qui définit les noms, emplacements, et permissions pour de nombreux types de fichiers et répertoires.
Le document FHS est la référence faisant figure d'autorité pour tout système de fichiers conforme à FHS, mais le standard laisse de nombreuses zones non définies ou extensibles. Cette section présente une vue d'ensemble du standard et une description des parties du système de fichiers non couvertes par le standard.
Les deux éléments les plus importants permettant d'établir la conformité FHS incluent  :
  • La compatibilité avec d'autres systèmes conformes à FHS
  • La possibilité de monter une partition /usr/ en lecture seule. Ceci est particulièrement important car /usr/ contient des fichiers exécutables communs et ne devrait pas être modifié par les utilisateurs. En outre, comme la partition /usr/ est montée en lecture seule, elle devrait pouvoir être montée à partir du lecteur CD-ROM ou depuis une autre machine via un montage NFS en lecture seule.

2.1.1. Organisation FHS

Les répertoires et fichiers notés ici représentent un sous-ensemble de ceux qui sont spécifiés par le document FHS. Veuillez consulter la documentation FHS la plus récente sur http://www.pathname.com/fhs/ afin d'obtenir les informations les plus complètes.

Note

Les répertoires disponibles dépendent de ce qui à été installé sur un système donné. Les listes suivantes ne représentent qu'un exemple de ce que l'on s'attend à y trouver.

2.1.1.1. Collecte des informations sur les systèmes de fichiers

La commande df rapporte l'utilisation de l'espace disque du système. Sa sortie est similaire à la suivante :

Exemple 2.1. Sortie de la commande df

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                       11675568   6272120   4810348  57% / /dev/sda1
	                 100691      9281     86211  10% /boot
none                     322856         0    322856   0% /dev/shm
Par défaut, df affiche la taille de la partition en blocs de 1 kilo-octets, ainsi que la quantité d'espace disque utilisée et disponible en kilo-octets. Pour afficher ces informations en méga-octets et giga-octets, veuillez exécuter la commande df -h. L'argument -h se traduit par l'utilisation d'un format lisible (« human-readable »). La sortie de df -h est similaire à la suivante :

Exemple 2.2. Sortie de la commande df -h

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                        12G  6.0G  4.6G  57% / /dev/sda1
			99M  9.1M   85M  10% /boot 
none 			316M     0  316M   0% /dev/shm

Note

Dans les exemples ci-dessus, la partition montée /dev/shm représente le système de fichiers de la mémoire virtuelle du système.
La commande du affiche la quantité estimée d'espace utilisé par des fichiers dans un répertoire, et l'utilisation d'espace disque de chaque sous-répertoire. La dernière ligne dans la sortie de du affiche la totalité de l'utilisation d'espace disque du répertoire. Pour afficher la totalité de l'utilisation d'espace disque sous un format lisible, veuillez utiliser du -hs. Pour plus d'options, veuillez consulter man du.
Pour afficher les partitions du système et l'utilisation de l'espace disque sous un format graphique, veuillez utiliser la Surveillance système (« System Monitor  ») de Gnome en cliquant sur ApplicationsOutils systèmeSurveillance système ou en utilisant la commande gnome-system-monitor. Sélectionnez l'onglet Systèmes de fichiers pour afficher les partitions du système. La figure ci-dessous illustre l'onglet Systèmes de fichiers.
Onglet Surveillance système GNOME des systèmes de fichiers

Figure 2.1. Onglet Surveillance système GNOME des systèmes de fichiers

2.1.1.2. Répertoire /boot/

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

Avertissement

Ne pas supprimer le répertoire /boot/. Le système ne pourra plus être démarré si ce répertoire est supprimé.

2.1.1.3. Répertoire /dev/

Le répertoire /dev/ contient des nœuds de périphériques qui représente les types de périphériques suivants :
  • les périphériques attachés au système ;
  • les périphériques fournis par le noyau.
Ces nœuds de périphérique sont essentiels au bon fonctionnement du système. Le démon udevd crée et supprime les nœuds de périphérique dans /dev/ selon les besoins.
Les périphériques se trouvant dans le répertoire /dev/ et ses sous-répertoires sont définis en tant que caractère (fournissant uniquement un flux en série d'entrées et sortie, par exemple une souris ou un clavier) ou bloc (accessible de manière aléatoire, par exemple un disque dur ou un lecteur de disquettes). Si GNOME ou KDE est installé, certains périphériques de stockage seront automatiquement détectés lorsqu'ils sont connectés (comme les lecteurs USB), ou insérés (comme avec un lecteur CD ou DVD), puis une fenêtre contextuelle affichant le contenu apparaîtra.

Tableau 2.1. Exemples de fichiers communs dans le répertoire /dev

FichierDescription
/dev/hdaPériphérique maître sur le canal IDE principal.
/dev/hdbPériphérique esclave sur le canal IDE principal.
/dev/tty0Première console virtuelle.
/dev/tty1Seconde console virtuelle.
/dev/sdaPremier périphérique sur le canal principal SCSI ou SATA.
/dev/lp0Premier port parallèle.
Un périphérique bloc valide peut être de l'un des deux types de d'entrées suivants :
Un périphérique mappé
Un volume logique dans un groupe de volumes. Par exemple, /dev/mapper/VolGroup00-LogVol02.
Un périphérique statique
Un volume de stockage traditionnel. Par exemple, /dev/sdbX, où sdb est un nom de périphérique de stockage et où X est le numéro de la partition. /dev/sdbX peut également être /dev/disk/by-id/WWID, ou /dev/disk/by-uuid/UUID, (voir Section 24.7, « Dénomination persistante » pour obtenir plus d'informations sur ces options).

2.1.1.4. Répertoire /etc/

Le répertoire /etc/ est réservé aux fichiers de configuration qui sont locaux à l'ordinateur. Il ne doit contenir aucun fichier binaire ; tout fichier binaire devrait être déplacé dans /usr/bin/ ou /usr/sbin/.
Par exemple, le répertoire /etc/skel/ stocke les fichiers utilisateur « squelette », qui sont utilisés pour remplir un répertoire de base lorsqu'un utilisateur est créé pour la première fois. Les applications stockent aussi leurs fichiers de configuration dans ce répertoire et peuvent les référencer lors de leur exécution. Le fichier /etc/exports contrôle quels systèmes de fichiers sont exportés vers des hôtes distants.

2.1.1.5. Répertoire /mnt/

Le répertoire /mnt/ est réservé aux systèmes de fichiers montés de manière temporaire, comme les montages de systèmes de fichiers NFS. Pour tous les supports de stockage amovibles, veuillez utiliser le répertoire /media/. Les supports de stockage amovibles détectés automatiquement seront montés dans le répertoire /media.

Important

Le répertoire /mnt ne doit pas être utilisé par des programmes d'installation.

2.1.1.6. Répertoire /opt/

Le répertoire /opt/ est habituellement réservé aux paquets logiciels et aux paquets de modules complémentaires ne faisant pas partie de l'installation par défaut. Un paquet effectuant une installation sur /opt/ crée un répertoire portant son nom, par exemple, /opt/packagename/. Dans la plupart des cas, ce genre de paquets observe une structure prédictible de sous-répertoires. La plupart stockent leurs binaires dans /opt/packagename/bin/ et leurs pages man dans /opt/packagename/man/.

2.1.1.7. Répertoire /proc/

Le répertoire /proc/ contient des fichiers spéciaux qui extraient des informations du noyau ou y envoient des informations. Des exemples de ce genre d'informations incluent la mémoire système, des informations sur le CPU et la configuration du matériel. Pour obtenir des informations supplémentaires sur /proc/, veuillez consulter le Section 2.3, « Système de fichiers virtuel /proc ».

2.1.1.8. Répertoire /srv/

Le répertoire /srv/ contient des données spécifiques au site servies par un système Red Hat Enterprise 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 pertinentes à un utilisateur en particulier doivent être placées dans le répertoire /home/.

2.1.1.9. Répertoire /sys/

Le répertoire /sys/ utilise le nouveau système de fichiers virtuel spécifique au noyau, sysfs. Grâce à la meilleure prise en charge de l'enfichage à chaud de périphériques matériels dans le noyau, le répertoire /sys/ contient des informations similaires à celles qui sont offertes par /proc/, mais affiche une vue hiérarchique des informations des périphériques qui est spécifique aux périphériques enfichables à chaud.

2.1.1.10. Répertoire /usr/

Le répertoire /usr/ est utilisé pour les fichiers pouvant être partagés à travers de multiples machines. Le répertoire /usr/ se trouve souvent sur sa propre partition et est monté en lecture seule. Au minimum, le répertoire /usr/ doit contenir les sous-répertoires suivants :
/usr/bin
Ce répertoire est utilisé pour les binaires.
/usr/etc
Ce répertoire est utilisé pour les fichiers de configuration globaux.
/usr/games
Ce répertoire est utilisé pour stocker les jeux.
/usr/include
Ce répertoire est utilisé pour les fichiers en-têtes C.
/usr/kerberos
Ce répertoire est utilisé pour les fichiers et binaires liés à Kerberos.
/usr/lib
Ce répertoire est utilisé pour les fichiers objets et les bibliothèques qui ne sont pas conçus pour être directement utilisés par des scripts shell ou des utilisateurs.
À partir de Red Hat Enterprise Linux 7.0, le répertoire /lib/ a été mergé avec /usr/lib. Il doit également contenir les bibliothèques nécessaires à l'exécution des binaires dans /usr/bin/ et /usr/sbin/. Ces images de bibliothèques partagées sont utilisées pour démarrer le système ou exécuter des commandes à l'intérieur du système de fichiers.
/usr/libexec
Ce répertoire contient les programmes d'assistance de petite taille appelés par d'autres programmes.
/usr/sbin
À partir de Red Hat Enterprise Linux 7.0, /sbin a été déplacé dans /usr/sbin. Cela signifie qu'il contient tous les binaires d'administration système, y compris ceux qui sont essentiels pour démarrer, restaurer, recouvrer ou réparer le système. Les binaires de /usr/sbin/ ont besoin de privilèges root pour être utilisés.
/usr/share
Ce répertoire stocke les fichiers qui ne sont pas particuliers à l'architecture.
/usr/src
Ce répertoire stocke le code source.
/usr/tmp lié à /var/tmp
Ce répertoire stocke les fichiers temporaires.
Le répertoire /usr/ devrait aussi contenir un sous-répertoire /local/. Comme recommandé par la norme FHS, ce sous-répertoire est utilisé par l'administrateur système lors de l'installation locale de logiciels et ne doit pas être écrasé pendant les mises à jour du système. Le répertoire /usr/local possède une structure similaire à /usr/ et contient les sous-répertoires suivants :
  • /usr/local/bin
  • /usr/local/etc
  • /usr/local/games
  • /usr/local/include
  • /usr/local/lib
  • /usr/local/libexec
  • /usr/local/sbin
  • /usr/local/share
  • /usr/local/src
L'utilisation par Red Hat Enterprise Linux de /usr/local/ diffère légèrement de la norme FHS. La norme FHS déclare que /usr/local/ doit être utilisé pour stocker des logiciels qui ne doivent pas être affectés par les mises à niveau de logiciels système. Comme le gestionnaire de paquet RPM, « RPM Package Manager », peut effectuer des mises à niveau de logiciels en toute sécurité, il n'est pas nécessaire de protéger les fichiers en les stockant dans /usr/local/.
À la place, Red Hat Enterprise Linux utilise /usr/local/ pour les logiciels locaux. 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 paquet ou programme sous le répertoire /usr/local/.

2.1.1.11. Répertoire /var/

Comme la norme FHS requiert que Linux monte /usr/ en lecture seule, tout programme qui écrit des fichiers journaux ou nécessite les répertoires spool/ ou lock/ doit les écrire sur le répertoire /var/. La norme FHS déclare que /var/ est utilisé pour les données variables, ce qui inclut les répertoires et fichier spool, les données de journalisation, et les fichiers transitoires et temporaires.
Voici quelques répertoires qui se trouvent dans le répertoire /var/ :
  • /var/account/
  • /var/arpwatch/
  • /var/cache/
  • /var/crash/
  • /var/db/
  • /var/empty/
  • /var/ftp/
  • /var/gdm/
  • /var/kerberos/
  • /var/lib/
  • /var/local/
  • /var/lock/
  • /var/log/
  • /var/mail lié à /var/spool/mail/
  • /var/mailman/
  • /var/named/
  • /var/nis/
  • /var/opt/
  • /var/preserve/
  • /var/run/
  • /var/spool/
  • /var/tmp/
  • /var/tux/
  • /var/www/
  • /var/yp/

Important

Le répertoire /var/run/media/user contient des sous-répertoires utilisés comme points de montage pour des supports amovibles, tels que les supports de stockage USB, les DVD, les CD-ROM, et les disques Zip. Notez qu'auparavant, le répertoire /media/ était utilisé pour cela.
Les fichiers de journalisation du système, tels que messages et lastlog, sont placés dans le répertoire /var/log/. Le répertoire /var/lib/rpm/ contient des bases de données RPM du système. Les fichiers de verrouillage sont placés dans le répertoire /var/lock/, habituellement dans les répertoires du programme utilisant le fichier. Le répertoire /var/spool/ contient des sous-répertoires qui stockent les fichiers de données de certains programmes. Ces sous-répertoires incluent :
  • /var/spool/at/
  • /var/spool/clientmqueue/
  • /var/spool/cron/
  • /var/spool/cups/
  • /var/spool/exim/
  • /var/spool/lpd/
  • /var/spool/mail/
  • /var/spool/mailman/
  • /var/spool/mqueue/
  • /var/spool/news/
  • /var/spool/postfix/
  • /var/spool/repackage/
  • /var/spool/rwho/
  • /var/spool/samba/
  • /var/spool/squid/
  • /var/spool/squirrelmail/
  • /var/spool/up2date/
  • /var/spool/uucp/
  • /var/spool/uucppublic/
  • /var/spool/vbox/