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 il (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 sur ceux-ci.
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 fichiers journaux, peuvent être modifiés à tout moment ; les fichiers statiques, tels que des binaires, ne peuvent pas changer sans une 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 se produire 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 sont un sous-ensemble de petite taille de ceux 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.
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 utiliser 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 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.
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.
Fichier | Description |
---|---|
/dev/hda | Périphérique maître sur le canal IDE principal. |
/dev/hdb | Périphérique esclave sur le canal IDE principal. |
/dev/tty0 | Première console virtuelle. |
/dev/tty1 | Seconde console virtuelle. |
/dev/sda | Premier périphérique sur le canal principal SCSI ou SATA. |
/dev/lp0 | Premier port parallèle. |
/dev/ttyS0 | Port série. |
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 /bin/
ou /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 /lib/
Le répertoire
/lib/
doit uniquement contenir les bibliothèques nécessaires à l'exécution des binaires dans /bin/
et /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.
2.1.1.6. Répertoire /media/
Le répertoire
/media/
contient des sous-répertoires utilisés comme points de montage pour des supports amovibles, tels que les supports de stockage USB, les DVD et les CD-ROM.
2.1.1.7. 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.8. 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.9. Répertoire /proc/
Le répertoire
/proc/
contient des fichiers spéciaux qui extraient des informations du noyau ou y envoie 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.10. Répertoire /sbin/
Le répertoire
/sbin/
stocke les binaires essentiels au démarrage, à la restauration, la récupération, ou la réparation du système. Les binaires dans /sbin/
requièrent des privilèges root pour être utilisés. En outre, /sbin/
contient des binaires utilisés par le système avant que le répertoire /usr/
ne soit monté. Tout utilitaire système utilisé après le montage de /usr/
sera habituellement placé dans /usr/sbin/
.
Au minimum, les programmes suivants doivent être stockés dans
/sbin/
:
arp
clock
halt
init
fsck.*
grub
ifconfig
mingetty
mkfs.*
mkswap
reboot
route
shutdown
swapoff
swapon
2.1.1.11. 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/
.
Note
L'installation httpd par défaut utilise
/var/www/html
pour le contenu servi.
2.1.1.12. Répertoire /sys/
Le répertoire
/sys/
utilise le nouveau système de fichiers virtuel spécifique au noyau 2.6, sysfs
. Grâce à la meilleure prise en de l'enfichage à chaud de périphériques matériels dans le noyau 2.6, le répertoire /sys/
contient des informations similaires à celles 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.13. 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. Le répertoire /usr/
contient habituellement 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. Ce répertoire est destiné aux systèmes 32-bit.
/usr/lib64
- 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. Ce répertoire est destiné aux systèmes 64-bit.
/usr/libexec
- Ce répertoire contient les programmes d'assistance de petite taille appelés par d'autres programmes.
/usr/sbin
- Ce répertoire stocke les binaires d'administration système qui n'appartiennent pas à
/sbin/
. /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/
devrait ê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.14. 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/
devrait 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.
Ci-dessous figurent certains des répertoires trouvés dans le répertoire
/var/
, selon ce qui installé sur le système :
/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/
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 peuvent inclure :
/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/