Avant que l'on puisse utiliser un système de fichiers, celui-ci doit être monté. Le système d'exploitation réalise alors diverses tâches de vérification afin de s'assurer que tout fonctionne correctement. Comme tous les fichiers d'UNIX sont dans une seule arborescence, l'opération de montage fera apparaître le contenu du nouveau système de fichiers comme s'il s'agissait d'un sous-répertoire existant dans un système de fichiers déjà monté.
Par exemple, la figure 3.3 montre trois systèmes de fichiers distincts, chacun ayant son propre répertoire racine. Quand les deux derniers sont montés sous home et /usr du premier système de fichiers, on obtient une seule arborescence, celle de la figure 3.4.
Les montages ont été faits en utilisant les commandes suivantes :
La commande mount prend deux arguments. Le premier est le fichier
spécial correspondant au disque ou à la partition
contenant le système de fichiers. Le second est le répertoire sous lequel il
sera monté. Après ces deux commandes, les contenus
des deux systèmes de fichiers apparaissent comme les contenus respectifs des
répertoires /home et /usr. On dit alors
que << /dev/hda2 est monté sur /home >>, de même pour
/usr. Pour consulter l'un des systèmes de fichiers, on consulte le
contenu du répertoire sur lequel il a été monté, simplement comme pour tout
autre répertoire. On notera la différence entre le fichier spécial
/dev/hda2, et le répertoire de montage /home. Le fichier spécial
donne accès au contenu brut du disque, tandis que le répertoire de montage
donne accès aux fichiers du disque. Le répertoire de montage est appelé
point de montage.
Linux supporte plusieurs types de systèmes de fichiers. mount essaie
de deviner le type du système de fichiers. On peut aussi utiliser l'option
-t fstype pour spécifier directement le type ; c'est quelques fois
nécessaire car les heuristiques que mount utilise ne fonctionnent pas
toujours. Par exemple, pour monter une disquette MS-DOS, on peut utiliser la
commande suivante :
Le répertoire de montage n'a pas besoin d'être vide, mais il doit exister.
Cependant, tous les fichiers qu'il contient seront inaccessibles par leurs
noms pendant que le système de fichiers est monté. (Tout fichier déjà ouvert
sera encore accessible. Les fichiers ayant des liens physiques à partir
d'autres répertoires pourront être accédés en utilisant ces noms.) Cela
n'est pas grave, et peut même s'avérer utile. Par exemple, certains
préfèrent avoir /tmp et /var/tmp comme synonymes et font de
/tmp un lien symbolique vers /var/tmp. Quand le système est lancé,
avant que le système de fichiers /var ne soit monté, un répertoire
/var/tmp résident sur le système de fichiers racine est utilisé à la
place. Quand /var est monté, il rend le répertoire /var/tmp
inaccessible. Si /var/tmp n'existait pas sur le système de fichiers
racine, il serait impossible d'utiliser des fichiers temporaires avant de
monter /var.
Si l'on n'a pas l'intention d'écrire quoi que ce soit sur le système de fichiers, on utilise l'option -r de mount pour avoir un montage en lecture seule. Cela fait que le noyau bloquera toute tentative d'écriture sur le système de fichiers et empêchera aussi la mise à jour des dates d'accès aux fichiers dans les inodes. Les montages en lecture seulement sont nécessaires pour les supports sur lesquels on ne peut écrire, les CD-ROM's, par exemple.
Le lecteur attentif aura déjà remarqué un petit problème logistique. Comment est monté le premier système de fichiers (appelé système de fichiers racine, car il contient le répertoire racine), puisqu'il est évident qu'il ne peut être monté sur un autre système de fichiers ? Et bien, la réponse est que cela est réalisé par magie3.9. Le système de fichiers racine est monté au moment du démarrage, et on peut considérer qu'il est toujours monté - si le système de fichiers racine ne peut être monté, Linux ne peut démarrer. Le nom du système de fichiers qui est monté en tant que racine est soit compilé dans le noyau, soit établi en utilisant LILO ou rdev.
Le système de fichiers racine est, d'habitude, d'abord monté en lecture seule. Les scripts de démarrage lancent ensuite fsck pour vérifier sa validité et, s'il n'y a pas de problème, le re-montent pour autoriser aussi les écritures. fsck ne doit pas être lancé sur un système de fichiers monté, car tout changement dans le système de fichiers pendant que fsck s'exécute causerait des problèmes. Le système de fichiers racine étant monté en lecture seule pendant qu'il est vérifié, fsck peut réparer tout problème sans souci car l'opération de re-montage videra toute donnée que le système gardait en mémoire.
Sur beaucoup d'installations, d'autres systèmes de fichiers peuvent aussi être montés au démarrage. Ils sont spécifiés dans le fichier /etc/fstab ; voir la page fstab du manuel en ligne pour les détails concernant son format. Le moment où les systèmes de fichiers supplémentaires sont montés dépend de plusieurs facteurs, et peut être configuré par l'administrateur si besoin est. Lorsque le chapitre sur le démarrage sera terminé, vous pourrez lire tout ce qu'il faut pour cela.
Lorsqu'un système de fichiers n'a plus besoin d'être monté, il peut être
démonté avec umount3.10. umount
prend un seul argument : soit le fichier spécial, soit le point de montage.
Par exemple, pour démonter les répertoires de l'exemple précédent, on peut
utiliser les commandes suivantes :
Voir les pages du manuel pour de plus amples informations sur l'utilisation
de cette commande. Il est impératif de toujours démonter une disquette
montée. Ne vous contentez pas de l'ôter du lecteur ! À cause du
cachage des disques, les données ne sont pas nécessairement écrites sur la
disquette tant que l'on ne l'a pas démontée, enlever la disquette du lecteur
trop tôt peut faire que les contenus soient altérés. Si l'on n'a fait que
lire la disquette, ce n'est pas trop grave, mais si l'on a écrit dessus,
même accidentellement, le résultat peut être catastrophique.
Le montage et le démontage requièrent les privilèges du super-utilisateur,
donc seul root peut le faire. La raison est que, si tout utilisateur
pouvait monter une disquette sur n'importe quel répertoire, il serait alors
facile de créer une disquette avec, par exemple, un cheval de Troie déguisé
en /bin/sh, ou tout autre programme couramment utilisé. Cependant, il
est souvent nécessaire de permettre aux utilisateurs d'utiliser les
disquettes, et il y a plusieurs façons de procéder :
L'option noauto empêche ce montage d'être réalisé automatiquement au démarrage du système (il empêche mount -a de la monter). L'option user autorise tous les utilisateurs à monter le système de fichiers, et, pour des raisons de sécurité, interdit l'exécution des programmes (normaux ou setuid) et l'interprétation des fichiers spéciaux se trouvant sur ce système de fichiers. Après cela, tout utilisateur peut monter une disquette ayant un système de fichiers msdos avec la commande suivante :
La disquette peut (et doit, bien sûr) être démontée avec la commande
umount correspondante.
Si l'on veut permettre l'accès à différents types de disquettes, on doit donner plusieurs points de montage. Les réglages peuvent être différents pour chaque point de montage. Par exemple, pour permettre l'accès à la fois aux disquettes MS-DOS et ext2, on pourrait avoir les lignes suivantes dans /etc/fstab :
/dev/fd0 /dosfloppy msdos user,noauto 0 0 /dev/fd0 /ext2floppy ext2 user,noauto 0 0
En ce qui concerne les systèmes de fichiers MS-DOS (pas seulement les disquettes), on voudra probablement en restreindre l'accès en utilisant les options uid, gid, et umask, décrites en détail dans la page mount du manuel en ligne. Si l'on est imprudent, monter un système de fichiers MS-DOS donne à tout le monde au moins le droit de lire les fichiers qui s'y trouvent, ce qui n'est pas souhaitable.