next up previous contents index
Next: Vérification de l'intégrité d'un Up: Systèmes de fichiers Previous: Création d'un système de   Table des matières   Index


Montage et démontage

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.

Figure: Trois systèmes de fichiers séparés.
\includegraphics{disks/hd-mount-separate.ps}

Figure: /home et /usr ont été montés.
\includegraphics{disks/hd-mount-mounted.ps}

Les montages ont été faits en utilisant les commandes suivantes :
\begin{tscreen}
\verb*\vert$ \vert {\sl mount /dev/hda2 /home} \\
\verb*\vert$ \vert {\sl mount /dev/hda3 /usr} \\
\verb*\vert$ \vert
\end{tscreen}
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 :
\begin{tscreen}
\verb*\vert$ \vert {\sl mount -t msdos /dev/fd0 /floppy} \\
\verb*\vert$ \vert
\end{tscreen}
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 :
\begin{tscreen}
\verb*\vert$ \vert {\sl umount /dev/hda2 } \\
\verb*\vert$ \vert {\sl umount /usr} \\
\verb*\vert$ \vert
\end{tscreen}
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 :

Cette dernière possibilité peut être réalisée en ajoutant une ligne comme celle qui suit dans le fichier /etc/fstab :
\begin{tscreen}
/dev/fd0 /floppy msdos user,noauto 0 0
\end{tscreen}
Les différentes colonnes correspondent au fichier pilote à monter, au répertoire de montage, au type de système de fichiers, aux options, à la fréquence de sauvegarde (utilisée par dump), et au numéro de passage de fsck (pour spécifier l'ordre dans lequel les systèmes de fichiers doivent être vérifiés au moment du démarrage ; 0 signifie qu'il n'y aura pas de vérification).

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 :


\begin{tscreen}
\verb*\vert$ \vert {\sl mount /floppy} \\
\verb*\vert$ \vert
\end{tscreen}
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.
next up previous contents index
Next: Vérification de l'intégrité d'un Up: Systèmes de fichiers Previous: Création d'un système de   Table des matières   Index
root
1999-03-03