Sous Windows, un nouveau volume reçoit souvent une lettre : C:, D:, E:… Une méthode simple, efficace et vaguement comparable à la distribution de tickets dans une administration.
Linux préfère une autre philosophie.
Il existe une seule grande arborescence qui commence à la racine :
/
Les disques, partitions, clés USB, systèmes de fichiers réseau et autres ressources viennent ensuite se rattacher à cette arborescence à l’endroit choisi.
Cette opération s’appelle le montage.
Monter un système de fichiers consiste à rendre son contenu accessible depuis un répertoire de l’arborescence Linux.
Le concept est simple.
La mise en œuvre l’est également, jusqu’au moment où l’on monte un partage réseau indispensable au démarrage sur un serveur qui n’a justement pas encore de réseau.
C’est là que l’administration système commence réellement.
Le principe du montage
Un système de fichiers peut exister parfaitement sur un disque sans être directement accessible dans votre arborescence.
Prenons une partition :
/dev/sdb1
Elle contient un système de fichiers ext4.
On crée un répertoire :
sudo mkdir -p /mnt/data
Puis on demande au noyau de rattacher le système de fichiers à cet emplacement :
sudo mount /dev/sdb1 /mnt/data
Dès cet instant, le contenu de /dev/sdb1 devient visible sous :
/mnt/data
Pour les applications, il s’agit simplement d’un répertoire supplémentaire.
Les programmes n’ont pas besoin de savoir si les fichiers qu’ils y trouvent proviennent :
- d’un disque SATA ;
- d’un SSD NVMe ;
- d’une clé USB ;
- d’un serveur NFS situé à l’autre bout du bâtiment ;
- d’un partage SMB ;
- d’une image ISO ;
- d’un système de fichiers temporaire en mémoire ;
- ou d’une machinerie de stockage tellement compliquée que même
lsblkdemande quelques secondes de réflexion.
Le VFS : pourquoi tout ressemble à un fichier
Cette uniformité est rendue possible notamment par la couche VFS — Virtual File System du noyau Linux.
Le VFS fournit une interface commune permettant à des systèmes de fichiers très différents de coexister dans la même arborescence.
Un programme peut donc effectuer des opérations classiques comme :
open()
read()
write()
close()
sans nécessairement connaître les détails physiques du stockage situé derrière.
C’est l’une des grandes élégances d’Unix :
Vous ouvrez un fichier.
Le noyau se charge de déterminer combien de couches de sorcellerie sont nécessaires pour réellement vous le fournir.
Le point de montage
Le répertoire auquel on rattache un système de fichiers est appelé point de montage.
Par exemple :
/mnt/data
/mnt/usb
/srv/backups
/media/cdrom
Le répertoire doit normalement exister avant le montage lorsqu’on utilise la commande classique.
Par exemple :
sudo mkdir -p /mnt/usb
sudo mount /dev/sdb1 /mnt/usb
Que devient le contenu déjà présent dans le répertoire ?
Supposons que /mnt/data contienne déjà :
/mnt/data/fichier-important.txt
Puis vous montez un autre système de fichiers sur :
/mnt/data
Le fichier original n’est pas supprimé.
Il devient simplement masqué par le système de fichiers monté.
Après :
sudo umount /mnt/data
le contenu original réapparaît.
C’est un mécanisme très pratique.
C’est également une excellente manière de passer vingt minutes à rechercher des fichiers « disparus » qui n’ont jamais quitté leur place.
/mnt et /media : où monter ?
Deux emplacements apparaissent souvent.
/mnt
/mnt est traditionnellement utilisé pour les montages temporaires effectués par l’administrateur.
Par exemple :
/mnt/usb
/mnt/iso
/mnt/test
/media
/media est traditionnellement destiné aux supports amovibles.
Les environnements graphiques peuvent notamment y créer automatiquement des points de montage lorsqu’un utilisateur branche une clé USB.
On rencontre par exemple :
/media/alice/USB-DATA
/srv
Pour du stockage destiné à être utilisé durablement par des services, un emplacement sous :
/srv
peut être plus cohérent.
Par exemple :
/srv/data
/srv/backups
/srv/www
Il n’existe donc pas une obligation universelle de monter tous les disques sous /mnt.
Le point de montage doit surtout avoir un sens dans l’organisation de la machine.
Identifier avant de monter
Avant de monter aveuglément /dev/sdb1, vérifiez ce que représente réellement /dev/sdb1.
Afficher les périphériques bloc
lsblk
Une version plus informative :
lsblk -o NAME,SIZE,TYPE,FSTYPE,FSVER,LABEL,UUID,MOUNTPOINTS,MODEL
Par exemple :
NAME SIZE TYPE FSTYPE LABEL MOUNTPOINTS
sda 1.8T disk
└─sda1 1.8T part ext4 DATA /srv/data
sdb 931G disk
└─sdb1 931G part exfat USB
Afficher les systèmes de fichiers
lsblk -f
ou :
sudo blkid
Ces commandes permettent notamment d’identifier :
- le type du système de fichiers ;
- son UUID ;
- son label ;
- son état de montage.
Une habitude beaucoup plus sûre que :
« Je crois que le disque externe est sdb. »
Les sauvegardes ont été inventées pour ceux qui prononcent régulièrement cette phrase.
La commande mount
La forme générale est :
mount [options] source point_de_montage
Dans la plupart des opérations administratives sur des périphériques bloc, il faut utiliser les privilèges root :
sudo mount /dev/sdb1 /mnt/data
Lorsque le type du système de fichiers peut être détecté automatiquement, il n’est généralement pas nécessaire de préciser -t.
Le noyau et les outils de montage reconnaissent normalement le système de fichiers à partir de ses métadonnées.
Monter une partition ext4
Créons d’abord le point de montage :
sudo mkdir -p /mnt/data
Puis :
sudo mount /dev/sdb1 /mnt/data
Vérifiez :
findmnt /mnt/data
ou :
df -hT /mnt/data
Monter explicitement un type de système de fichiers
L’option :
-t
permet de préciser le type.
Par exemple :
sudo mount -t ext4 /dev/sdb1 /mnt/data
Pour exFAT :
sudo mount -t exfat /dev/sdb1 /mnt/usb
Dans beaucoup de cas, ceci suffit toutefois :
sudo mount /dev/sdb1 /mnt/usb
Préciser manuellement le type n’est donc pas toujours nécessaire.
Monter en lecture seule
Pour empêcher normalement les écritures sur le système de fichiers :
sudo mount -o ro /dev/sdb1 /mnt/lecture
ro signifie read-only.
L’option inverse est :
rw
pour read-write.
Un montage en lecture seule est particulièrement intéressant :
- pour examiner un volume suspect ;
- pour certaines opérations de récupération ;
- pour éviter des modifications accidentelles ;
- pour des médias qui n’ont de toute façon aucune raison d’être modifiés.
Si votre objectif est de récupérer des données sur un système de fichiers endommagé, éviter les écritures inutiles est généralement une excellente idée.
La première étape d’une récupération ne devrait pas être de donner au système quinze nouvelles occasions de modifier le disque.
Monter une image ISO
Une image ISO est un fichier représentant généralement un système de fichiers optique.
Créons un point de montage :
sudo mkdir -p /mnt/iso
Puis :
sudo mount -o loop,ro fichier.iso /mnt/iso
L’option loop utilise un loop device, c’est-à-dire un mécanisme permettant de présenter un fichier comme un périphérique bloc.
Le contenu devient alors accessible sous :
/mnt/iso
Une image ISO classique étant normalement destinée à être lue, le montage en lecture seule est parfaitement naturel.
Voir les loop devices
losetup -a
Vous pourrez voir quelque chose comme :
/dev/loop0: (...) (/home/alice/debian.iso)
Votre fichier est devenu, pour quelques instants, suffisamment convaincant pour que Linux le traite comme un disque.
Monter un CD ou DVD
Lorsque le périphérique existe par exemple sous :
/dev/sr0
on peut faire :
sudo mkdir -p /mnt/cdrom
sudo mount /dev/sr0 /mnt/cdrom
On rencontre également parfois le lien :
/dev/cdrom
permettant :
sudo mount /dev/cdrom /mnt/cdrom
Les systèmes optiques modernes ne sont peut-être plus exactement au sommet de leur carrière, mais l’informatique d’entreprise dispose d’une remarquable capacité à maintenir en vie des supports que le grand public a oubliés depuis quinze ans.
Démonter un système de fichiers
La commande est :
umount
sans n.
Par exemple :
sudo umount /mnt/usb
ou :
sudo umount /dev/sdb1
Les deux approches fonctionnent lorsque l’identification du montage ne prête pas à confusion.
Pourquoi faut-il démonter proprement ?
Les écritures ne sont pas nécessairement envoyées immédiatement et physiquement au support.
Linux utilise des caches afin d’améliorer les performances.
Lorsque vous démontez proprement un système de fichiers, les données en attente sont synchronisées et les structures nécessaires sont finalisées.
Arracher une clé USB pendant une écriture n’est donc pas exactement équivalent à :
sudo umount /mnt/usb
Même si, physiquement, les deux opérations se terminent avec la clé sur votre bureau.
Forcer la synchronisation
La commande :
sync
demande notamment au noyau d’écrire les données mises en cache vers les systèmes de fichiers concernés.
Elle peut être utile dans certaines situations, mais ne remplace pas le démontage propre d’un support amovible.
« Target is busy » : quelqu’un refuse de sortir
Lors du démontage :
sudo umount /mnt/data
vous pouvez recevoir :
umount: /mnt/data: target is busy.
Cela signifie qu’un processus utilise toujours le système de fichiers.
Par exemple :
- un fichier est ouvert ;
- un programme travaille dans ce répertoire ;
- un terminal possède son répertoire courant sous le point de montage ;
- un service utilise des données présentes sur le volume.
Chercher les processus concernés avec fuser
sudo fuser -vm /mnt/data
Ou avec lsof
sudo lsof +f -- /mnt/data
Parfois, le coupable est tout simplement votre shell :
cd /mnt/data
Vous demandez ensuite à Linux de démonter le répertoire dans lequel vous vous trouvez.
Linux refuse.
Et pour une fois, il est difficile de lui reprocher son manque de coopération.
Le démontage paresseux : umount -l
L’option :
sudo umount -l /mnt/data
effectue un lazy unmount.
Le point de montage est détaché de l’arborescence immédiatement, tandis que les références encore utilisées seront nettoyées lorsqu’elles ne seront plus occupées.
Cela peut être utile dans certaines situations, notamment avec des ressources réseau problématiques.
Mais ce n’est pas une commande magique destinée à remplacer :
« Comprendre pourquoi le système de fichiers est encore utilisé. »
-l est un outil.
Pas un traitement contre l’impatience.
Voir ce qui est monté
La commande :
mount
sans argument affiche les montages connus.
Mais la sortie peut rapidement devenir assez spectaculaire sur un système moderne.
Une commande généralement plus pratique est :
findmnt
Chercher un montage précis
findmnt /srv/data
Afficher source, cible, type et options
findmnt -o SOURCE,TARGET,FSTYPE,OPTIONS
Voir les systèmes de fichiers bloc
lsblk -f
Voir l’espace utilisé
df -hT
Ces outils répondent à des questions légèrement différentes :
| Commande | Question |
|---|---|
lsblk |
Quels périphériques bloc et partitions existent ? |
findmnt |
Quels systèmes de fichiers sont montés et où ? |
df |
Quelle capacité est disponible sur les systèmes de fichiers montés ? |
blkid |
Quels UUID, labels et signatures possède le stockage ? |
/etc/fstab : rendre un montage permanent
Un montage réalisé avec :
sudo mount /dev/sdb1 /srv/data
ne définit pas à lui seul un montage persistant après redémarrage.
Le fichier traditionnel permettant de décrire les systèmes de fichiers à monter est :
/etc/fstab
fstab signifie historiquement filesystem table.
Chaque ligne décrit normalement un système de fichiers.
Par exemple :
UUID=06fcb18d-7f20-42fe-bd31-15cbe73e11e0 /srv/data ext4 defaults 0 2
Les six champs de fstab
| Champ | Exemple | Rôle |
|---|---|---|
| 1 | UUID=06fcb... |
Source du système de fichiers |
| 2 | /srv/data |
Point de montage |
| 3 | ext4 |
Type du système de fichiers |
| 4 | defaults |
Options de montage |
| 5 | 0 |
Champ historique utilisé par dump |
| 6 | 2 |
Ordre de vérification fsck au démarrage |
Pourquoi utiliser UUID plutôt que /dev/sdb1 ?
On pourrait écrire :
/dev/sdb1 /srv/data ext4 defaults 0 2
Mais les noms comme :
/dev/sda
/dev/sdb
/dev/sdc
dépendent de la détection des périphériques.
Un disque appelé sdb aujourd’hui pourrait éventuellement apparaître sous un autre nom après un changement de matériel ou d’ordre de détection.
Un UUID identifie le système de fichiers.
Pour l’obtenir :
sudo blkid /dev/sdb1
ou :
lsblk -f
Exemple :
/dev/sdb1: UUID="06fcb18d-7f20-42fe-bd31-15cbe73e11e0" TYPE="ext4"
Puis :
UUID=06fcb18d-7f20-42fe-bd31-15cbe73e11e0 /srv/data ext4 defaults 0 2
Pour les montages persistants de disques locaux, UUID est généralement préférable au nom /dev/sdX.
Les machines apprécient les identifiants de 36 caractères.
Les humains, curieusement, préfèrent sdb1.
Dans ce cas précis, la machine a probablement raison.
UUID, LABEL, PARTUUID et PARTLABEL
fstab peut utiliser plusieurs types d’identifiants.
| Notation | Désigne |
|---|---|
UUID=... |
UUID du système de fichiers |
LABEL=DATA |
Label du système de fichiers |
PARTUUID=... |
Identifiant de la partition |
PARTLABEL=... |
Nom de partition, notamment avec GPT |
Un reformatage crée normalement un nouvel UUID de système de fichiers.
Le PARTUUID peut rester inchangé tant que la partition elle-même n’est pas recréée.
Le sixième champ de fstab : 0, 1 ou 2 ?
Le dernier champ contrôle traditionnellement l’ordre de vérification par fsck.
Pour les systèmes de fichiers qui utilisent cette vérification :
0: ne pas demander de vérification automatique via ce mécanisme ;1: normalement réservé au système de fichiers racine ;2: autres systèmes de fichiers devant être vérifiés.
On rencontre donc souvent :
UUID=... / ext4 defaults 0 1
UUID=... /home ext4 defaults 0 2
UUID=... /srv/data ext4 defaults 0 2
Mais tous les systèmes de fichiers ne fonctionnent pas de la même manière.
Par exemple, Btrfs n’utilise pas ce mécanisme comme ext4 et est généralement configuré avec un pass à 0.
Modifier fstab sans transformer le prochain redémarrage en surprise
Avant de modifier :
/etc/fstab
une sauvegarde ne coûte presque rien :
sudo cp /etc/fstab /etc/fstab.backup
Modifiez ensuite le fichier.
Sur un système Debian avec systemd, rechargez sa configuration :
sudo systemctl daemon-reload
Vérifier la syntaxe et la cohérence
Utilisez :
findmnt --verify
C’est aujourd’hui la méthode recommandée pour contrôler fstab.
Tester les montages
On utilise également couramment :
sudo mount -a
qui tente de monter les entrées de fstab concernées, à l’exception notamment de celles portant noauto.
Mais mount -a n’est pas un véritable validateur exhaustif de fichier fstab.
Pour contrôler le fichier lui-même :
findmnt --verify
est préférable.
Cette vérification est particulièrement recommandée avant de redémarrer un serveur situé à 500 kilomètres.
La qualité d’une configuration fstab est directement proportionnelle au coût du trajet nécessaire pour la réparer physiquement.
Les options de montage principales
Le quatrième champ de fstab contient une liste d’options séparées par des virgules.
Exemple :
UUID=... /srv/data ext4 defaults,noatime 0 2
defaults
defaults
demande les options considérées comme normales pour le système de fichiers et le noyau.
Ce n’est pas littéralement une macro universelle figée pour toujours : les valeurs par défaut dépendent aussi du noyau et du système de fichiers.
ro
ro
Monte en lecture seule.
rw
rw
Demande un montage en lecture/écriture.
C’est le comportement courant lorsqu’aucune restriction ne l’empêche.
noexec
noexec
empêche l’exécution directe de programmes depuis le montage via les mécanismes habituels.
Par exemple :
UUID=... /srv/uploads ext4 defaults,noexec 0 2
Attention toutefois :
noexec n’est pas une barrière de sécurité absolue.
Un script lisible peut par exemple être fourni explicitement à son interpréteur :
bash /srv/uploads/script.sh
Le fichier n’a alors pas besoin d’être exécuté directement.
noexec est donc une mesure de durcissement utile, mais pas une cape d’invisibilité magique contre le code malveillant.
nosuid
nosuid
désactive notamment l’effet des bits SUID et SGID sur les fichiers du montage.
Cette option est souvent utilisée sur des espaces dans lesquels des utilisateurs ou des données peu fiables peuvent créer des fichiers.
nodev
nodev
empêche l’interprétation de fichiers spéciaux comme périphériques sur le système de fichiers.
On rencontre souvent une combinaison de durcissement comme :
nodev,nosuid,noexec
sur certains volumes de données.
Selon l’usage, évidemment.
Mettre noexec sur un volume qui contient précisément les exécutables que vous devez lancer est une stratégie de sécurité d’une efficacité remarquable, principalement contre vous-même.
noatime
noatime
empêche la mise à jour de la date de dernier accès — atime — à chaque lecture.
Cela peut réduire certaines écritures.
Mais Linux utilise très couramment aujourd’hui relatime, qui limite déjà fortement les mises à jour d’atime.
noatime n’est donc plus l’optimisation miraculeuse que suggèrent certains tutoriels datant de l’époque où un disque dur de 80 Go représentait un patrimoine.
noauto
noauto
empêche le montage automatique par les mécanismes habituels comme mount -a au démarrage.
Le montage reste disponible manuellement.
nofail
nofail
indique qu’une absence ou un échec du périphérique ne doit pas être considéré comme suffisamment critique pour bloquer le démarrage normal.
C’est particulièrement utile pour :
- un disque externe ;
- un volume facultatif ;
- une ressource qui n’est pas indispensable au fonctionnement du système.
Par exemple :
UUID=... /mnt/archive ext4 defaults,nofail 0 2
Votre ordinateur peut ainsi démarrer même si le disque « ARCHIVE » est resté sur le bureau du comptable.
Les options user et users
Par défaut, les montages système sont principalement une affaire de root.
Dans fstab, l’option :
user
peut permettre à un utilisateur non privilégié de monter une entrée donnée.
Par exemple :
UUID=... /mnt/usb exfat user,noauto 0 0
Les subtilités de user, users, propriétaire du montage et options de sécurité méritent toutefois d’être étudiées avant de transformer un serveur multi-utilisateur en atelier participatif de montage.
Monter par UUID directement
On peut aussi utiliser l’UUID en ligne de commande :
sudo mount UUID=06fcb18d-7f20-42fe-bd31-15cbe73e11e0 /mnt/data
ou le label :
sudo mount LABEL=DATA /mnt/data
Vous n’êtes donc pas obligé d’attendre fstab pour bénéficier d’identifiants persistants.
Montage NFS
NFS — Network File System permet de monter un système de fichiers exporté par une autre machine, très couramment entre systèmes Unix et Linux.
Sur Debian, installez les outils clients si nécessaire :
sudo apt install nfs-common
Créons le point de montage :
sudo mkdir -p /mnt/partage
Puis :
sudo mount -t nfs 192.168.0.42:/partage /mnt/partage
Ou avec un nom DNS :
sudo mount -t nfs nas.example.lan:/partage /mnt/partage
Le contenu distant apparaît alors exactement comme un répertoire local.
La latence réseau, elle, reste parfaitement consciente de la supercherie.
NFS dans fstab
Une entrée simple pourrait ressembler à :
nas.example.lan:/partage /srv/partage nfs defaults 0 0
Pour un montage réseau non essentiel, on peut envisager :
nas.example.lan:/partage /srv/partage nfs defaults,nofail,_netdev 0 0
_netdev
_netdev
indique explicitement que le montage dépend du réseau.
Systemd sait déjà reconnaître de nombreux systèmes de fichiers réseau à partir de leur type, mais _netdev reste utile lorsque cette dépendance ne peut pas être déduite naturellement.
Le message envoyé au système est essentiellement :
« N’essaie pas sérieusement de monter ceci avant d’avoir un réseau. »
Une précision qui semble évidente, mais que le démarrage parallèle moderne apprécie beaucoup.
Monter un partage SMB/CIFS
Pour accéder à un partage Windows ou Samba depuis Linux, on utilise généralement le système de fichiers CIFS.
Installez d’abord :
sudo apt install cifs-utils
Créez le point de montage :
sudo mkdir -p /mnt/partage
Puis :
sudo mount -t cifs //192.168.0.50/partage /mnt/partage -o username=alice
Si aucun mot de passe n’est fourni, l’outil peut le demander interactivement.
Évitez le mot de passe directement dans la commande
On voit fréquemment ceci :
sudo mount -t cifs //192.168.0.50/partage /mnt/partage -o username=alice,password=SuperSecret
Cela fonctionne.
Cela possède également quelques défauts :
- le mot de passe peut finir dans l’historique du shell ;
- il peut apparaître dans des scripts ;
- il risque d’être copié dans de la documentation ou des tickets ;
- et un secret écrit en clair finit souvent par développer une vie sociale étonnamment riche.
Utiliser un fichier de credentials
Créez par exemple :
sudo nano /root/.smb-credentials
Avec :
username=alice
password=SuperSecret
domain=EXEMPLE
Le champ domain n’est nécessaire que si votre environnement en a besoin.
Protégez ensuite le fichier :
sudo chmod 600 /root/.smb-credentials
Puis montez :
sudo mount -t cifs //192.168.0.50/partage /mnt/partage -o credentials=/root/.smb-credentials
Dans fstab
//192.168.0.50/partage /mnt/partage cifs credentials=/root/.smb-credentials,_netdev,nofail 0 0
C’est nettement préférable à :
password=monmotdepasse
dans /etc/fstab.
Un fichier protégé n’est évidemment pas une solution cryptographique miraculeuse, mais il évite au moins de tatouer le mot de passe au milieu de la configuration de montage.
Permissions CIFS : uid, gid, file_mode et dir_mode
Un partage SMB ne possède pas nécessairement la même représentation Unix des propriétaires et permissions que votre machine Linux.
On utilise parfois des options comme :
uid=1000,gid=1000,file_mode=0640,dir_mode=0750
Par exemple :
//serveur/partage /srv/share cifs credentials=/root/.smb-credentials,uid=1000,gid=1000,file_mode=0640,dir_mode=0750,_netdev 0 0
Ces options doivent être adaptées à l’architecture d’authentification du partage.
Ne remplacez donc pas systématiquement tous les UID par 1000 simplement parce que c’était le nombre utilisé dans le premier tutoriel Google.
Systemd et fstab
Sur Debian moderne, systemd transforme les entrées de /etc/fstab en unités de montage lors du démarrage.
Une entrée concernant :
/srv/data
correspond conceptuellement à une unité :
srv-data.mount
Vous pouvez l’observer avec :
systemctl status srv-data.mount
Il n’est pas nécessaire d’écrire manuellement ces unités pour les montages classiques : fstab reste généralement la méthode la plus pratique pour une configuration administrée par un humain.
x-systemd.automount : monter seulement lorsqu’on en a besoin
Systemd propose une option particulièrement intéressante :
x-systemd.automount
Elle demande la création d’une unité d’automontage.
Le système de fichiers n’est alors réellement monté que lorsqu’un processus tente d’accéder au point de montage.
Exemple NFS :
nas.example.lan:/partage /srv/partage nfs nofail,_netdev,x-systemd.automount 0 0
Cette approche possède plusieurs intérêts :
- ne pas ralentir inutilement le démarrage ;
- mieux gérer certains serveurs réseau temporairement indisponibles ;
- monter la ressource seulement lorsqu’elle est réellement utilisée.
Au lieu de réveiller le NAS à chaque démarrage :
« Bonjour. Je n’ai besoin de rien, mais je voulais vérifier que vous étiez là. »
Linux attend que quelqu’un ait réellement besoin du partage.
Démonter automatiquement après une période d’inactivité
Avec systemd automount, on peut également utiliser un délai d’inactivité.
Par exemple :
x-systemd.automount,x-systemd.idle-timeout=10min
Une entrée pourrait devenir :
nas.example.lan:/partage /srv/partage nfs nofail,_netdev,x-systemd.automount,x-systemd.idle-timeout=10min 0 0
Après une période suffisante sans utilisation, systemd peut tenter de démonter la ressource.
Le partage réseau devient ainsi légèrement plus civilisé :
il vient quand on l’appelle et repart quand plus personne ne lui parle.
Montage bind : faire apparaître un répertoire ailleurs
Un montage ne doit pas nécessairement avoir un disque comme source.
Un bind mount permet de rendre un répertoire existant accessible à un second endroit.
Exemple :
sudo mkdir -p /srv/web/uploads
sudo mkdir -p /var/www/uploads
sudo mount --bind /srv/web/uploads /var/www/uploads
Les deux chemins montrent alors les mêmes fichiers.
Ce n’est pas une copie.
Ce n’est pas un lien symbolique.
C’est le même sous-arbre du système de fichiers exposé à un autre point de l’espace de noms.
Dans fstab
/srv/web/uploads /var/www/uploads none bind 0 0
Les bind mounts sont très utiles pour :
- certaines architectures de services ;
- des chroots ;
- l’exposition contrôlée de répertoires ;
- des conteneurs ;
- et diverses situations où déplacer physiquement les données serait inutile.
Montage tmpfs : un système de fichiers temporaire en mémoire
Linux peut monter un système de fichiers tmpfs.
Les données résident alors dans la mémoire virtuelle du système et peuvent utiliser RAM et swap selon les circonstances.
Par exemple :
sudo mkdir -p /mnt/ram
sudo mount -t tmpfs -o size=1G tmpfs /mnt/ram
Vous obtenez un espace temporaire plafonné ici à 1 Gio.
Après démontage ou redémarrage :
les données ne sont pas conservées.
C’est important.
Le mot temporaire n’est pas une suggestion marketing.
Dans fstab
tmpfs /mnt/ram tmpfs defaults,size=1G 0 0
tmpfs est utile pour :
- des fichiers temporaires ;
- certains caches ;
- des données éphémères ;
- des environnements nécessitant beaucoup d’I/O temporaires.
Il est moins recommandé pour conserver l’unique exemplaire de la comptabilité annuelle.
Les pseudo-systèmes de fichiers
Tous les montages Linux ne correspondent pas à des disques.
Des éléments essentiels comme :
/proc
/sys
/dev
sont également associés à des systèmes de fichiers particuliers.
proc
/proc expose des informations sur les processus et le noyau.
sysfs
/sys expose notamment des informations sur les périphériques et le modèle interne du noyau.
devtmpfs
/dev contient les représentations de nombreux périphériques.
Ces systèmes de fichiers montrent bien que « monter » ne signifie pas simplement :
« Brancher un disque. »
Le mécanisme de montage structure une grande partie de l’espace de noms Linux lui-même.
Remonter un système de fichiers avec d’autres options
Il est parfois possible de changer certaines options sans démonter complètement.
Par exemple, remonter la racine en lecture/écriture :
sudo mount -o remount,rw /
Ou remonter un volume en lecture seule :
sudo mount -o remount,ro /srv/data
Les possibilités exactes dépendent du système de fichiers et des options concernées.
Toutes les propriétés d’un montage ne peuvent pas nécessairement être transformées à chaud simplement parce que l’option remount existe.
Les namespaces de montage : tout le monde ne voit pas forcément la même chose
Linux possède des mount namespaces.
Ils permettent à différents groupes de processus de disposer de vues différentes des montages.
Cette fonction est fondamentale pour :
- les conteneurs ;
- l’isolation de services ;
- certaines fonctions de systemd ;
- les technologies comme Docker, Podman ou LXC.
Ainsi, un système de fichiers peut être visible dans un espace de noms et pas dans un autre.
Lorsque vous commencez à déboguer un montage visible dans le shell mais absent d’un conteneur, vous venez d’entrer dans la partie du cours où l’arborescence elle-même cesse d’être une vérité universelle.
Les montages et les permissions Unix
Monter un système de fichiers ne signifie pas automatiquement que tous les utilisateurs peuvent y écrire.
Prenons :
sudo mount /dev/sdb1 /srv/data
Si la racine du système de fichiers appartient à :
root:root
avec des permissions :
755
un utilisateur ordinaire ne pourra probablement pas créer directement des fichiers à sa racine.
Pour ext4, XFS et autres systèmes de fichiers Unix, les propriétaires et permissions sont stockés dans le système de fichiers.
On peut par exemple créer un répertoire puis définir son propriétaire :
sudo mkdir /srv/data/alice
sudo chown alice:alice /srv/data/alice
Il ne faut donc pas confondre :
- « le volume est monté » ;
- « l’utilisateur possède les permissions nécessaires ».
Linux adore séparer les problèmes proprement afin de vous permettre d’en rencontrer plusieurs successivement.
FAT, exFAT et les permissions
FAT et exFAT ne possèdent pas le même modèle de permissions Unix qu’ext4.
Lors du montage, on utilise donc souvent des options comme :
uid=
gid=
umask=
fmask=
dmask=
Par exemple :
sudo mount -o uid=1000,gid=1000,umask=022 /dev/sdb1 /mnt/usb
Le système présente alors les fichiers avec les propriétaires et permissions correspondant aux options de montage.
On ne peut pas appliquer exactement la même logique qu’avec ext4 simplement parce que les fichiers apparaissent tous sous /mnt.
Monter automatiquement une clé USB ?
Sur un serveur, on choisit généralement explicitement ce qui doit être monté.
Sur un environnement graphique de bureau, des composants comme udisks et le gestionnaire de fichiers peuvent automatiquement monter des périphériques amovibles lorsque l’utilisateur les branche.
Vous pouvez donc parfaitement utiliser Linux pendant des années sans taper :
mount /dev/sdb1 ...
à chaque clé USB.
La commande reste toutefois indispensable dès qu’on administre des serveurs, des systèmes sans interface graphique ou des scénarios moins automatisés.
Un montage ne monte pas forcément une « partition »
Les sources de montage possibles sont nombreuses :
| Source | Exemple |
|---|---|
| Partition physique | /dev/sdb1 |
| Logical Volume LVM | /dev/vgdata/lvbackup |
| RAID logiciel | /dev/md0 |
| Volume chiffré ouvert | /dev/mapper/secret |
| Image disque | fichier.iso via loop |
| NFS | serveur:/export |
| SMB/CIFS | //serveur/partage |
| Répertoire existant | bind mount |
| Mémoire | tmpfs |
La commande mount est donc moins un « outil pour monter les partitions » qu’un outil permettant d’assembler l’espace de noms des systèmes de fichiers.
Attention aux supports suspects
Brancher un support inconnu et commencer immédiatement à explorer son contenu n’est pas forcément la meilleure idée.
Pour examiner un support non fiable, on peut envisager selon le contexte :
- un montage en lecture seule ;
noexec;nosuid;nodev;- une machine isolée ou un environnement prévu pour l’analyse.
Par exemple :
sudo mount -o ro,noexec,nosuid,nodev /dev/sdb1 /mnt/suspect
Encore une fois, ces options réduisent certains risques mais ne transforment pas le système de fichiers en objet inoffensif.
Des vulnérabilités peuvent exister dans des parseurs, systèmes de fichiers ou logiciels qui ouvrent les données.
Une clé USB trouvée sur le parking n’est pas un cadeau de bienvenue de l’équipe informatique.
Et si elle contient salaires_direction_2026.xlsx, c’est probablement encore moins bon signe.
Diagnostiquer un montage qui échoue
Vous lancez :
sudo mount /dev/sdb1 /mnt/data
et Linux refuse.
Quelques vérifications permettent de procéder proprement.
1. Le point de montage existe-t-il ?
ls -ld /mnt/data
Sinon :
sudo mkdir -p /mnt/data
2. Le périphérique existe-t-il ?
lsblk
3. Quel système de fichiers contient-il ?
lsblk -f /dev/sdb1
ou :
sudo blkid /dev/sdb1
4. Est-il déjà monté ?
findmnt -S /dev/sdb1
5. Le support du système de fichiers est-il disponible ?
Pour CIFS :
sudo apt install cifs-utils
Pour le client NFS :
sudo apt install nfs-common
Pour certains systèmes de fichiers, des outils supplémentaires peuvent également être nécessaires.
6. Que dit le noyau ?
Après un échec :
dmesg | tail -n 50
ou avec journalctl :
journalctl -k -n 50
Le noyau peut fournir des informations beaucoup plus précises qu’un simple :
« Ça ne marche pas. »
7. Pour une unité systemd
systemctl status srv-data.mount
et :
journalctl -u srv-data.mount
Cas pratique : monter durablement un nouveau disque ext4
Supposons qu’un disque possède une partition ext4 :
/dev/sdb1
1. Identifier le volume
lsblk -f
2. Créer le point de montage
sudo mkdir -p /srv/data
3. Tester manuellement
sudo mount /dev/sdb1 /srv/data
4. Vérifier
findmnt /srv/data
5. Trouver l’UUID
sudo blkid /dev/sdb1
Supposons :
UUID="06fcb18d-7f20-42fe-bd31-15cbe73e11e0"
6. Ajouter dans /etc/fstab
UUID=06fcb18d-7f20-42fe-bd31-15cbe73e11e0 /srv/data ext4 defaults 0 2
7. Recharger systemd
sudo systemctl daemon-reload
8. Vérifier fstab
findmnt --verify
9. Tester
sudo umount /srv/data
sudo mount /srv/data
Lorsque la source et les options figurent dans fstab, il suffit généralement de préciser le point de montage :
sudo mount /srv/data
10. Vérifier une dernière fois
findmnt /srv/data
À ce stade, le volume est configuré pour être monté automatiquement selon les règles de fstab.
Vous pouvez maintenant redémarrer avec un niveau d’anxiété raisonnable.
Cas pratique : partage NFS à la demande
Supposons :
nas.example.lan:/backups
à monter sous :
/srv/backups
Installation :
sudo apt install nfs-common
sudo mkdir -p /srv/backups
Test :
sudo mount -t nfs nas.example.lan:/backups /srv/backups
Puis fstab :
nas.example.lan:/backups /srv/backups nfs nofail,_netdev,x-systemd.automount,x-systemd.idle-timeout=10min 0 0
Rechargez :
sudo systemctl daemon-reload
Vérifiez :
findmnt --verify
Le partage pourra alors être monté à la demande lorsque quelque chose tente d’accéder à :
/srv/backups
Une solution souvent plus agréable qu’un démarrage bloqué pendant que le serveur attend désespérément un NAS actuellement redémarré pour mise à jour.
Cas pratique : partage SMB persistant
Installation :
sudo apt install cifs-utils
Point de montage :
sudo mkdir -p /srv/compta
Credentials :
sudo nano /root/.smb-compta
Contenu :
username=svc-linux
password=MotDePasse
domain=ENTREPRISE
Permissions :
sudo chmod 600 /root/.smb-compta
Test :
sudo mount -t cifs //fileserver/compta /srv/compta -o credentials=/root/.smb-compta
Puis :
//fileserver/compta /srv/compta cifs credentials=/root/.smb-compta,_netdev,nofail,x-systemd.automount 0 0
Enfin :
sudo systemctl daemon-reload
findmnt --verify
La comptabilité est désormais disponible via Linux.
La responsabilité de comprendre les fichiers Excel reste malheureusement hors du périmètre de mount.
Les erreurs classiques
« J’ai monté le disque mais je ne vois pas mes anciens fichiers du répertoire »
Le montage masque temporairement le contenu qui se trouvait déjà sous le point de montage.
Démontez pour le revoir.
« Mon utilisateur ne peut pas écrire sur le disque »
Vérifiez :
- le type de système de fichiers ;
- le propriétaire ;
- les permissions ;
- les ACL ;
- et les options de montage.
mount rend le système de fichiers accessible.
Il ne distribue pas automatiquement les droits de propriété comme des confettis.
« Le disque ne revient pas après redémarrage »
Avez-vous configuré :
/etc/fstab
?
« Le serveur ne démarre plus normalement depuis que j’ai ajouté un disque USB »
Pour un stockage facultatif, vous auriez probablement apprécié :
nofail
« Mon partage réseau bloque le démarrage »
Examinez :
_netdev
nofail
x-systemd.automount
selon le besoin.
« J’ai mis le mot de passe SMB dans fstab »
Utilisez un fichier de credentials protégé.
Le mot de passe de production n’a pas besoin de devenir une décoration murale dans /etc/fstab.
« umount dit target is busy »
Cherchez le processus avant de sortir l’artillerie :
sudo fuser -vm /point/de/montage
« J’ai modifié fstab, je redémarre pour voir »
Non.
D’abord :
sudo systemctl daemon-reload
findmnt --verify
Puis testez le montage concerné.
Le redémarrage n’est pas un validateur syntaxique.
C’est simplement une manière très lente et très engageante de découvrir une faute de frappe.
Quelques commandes à retenir
| Commande | Fonction |
|---|---|
lsblk -f |
Afficher périphériques, systèmes de fichiers, UUID et montages |
blkid |
Afficher les signatures et identifiants des systèmes de fichiers |
mount |
Monter un système de fichiers |
umount |
Démonter un système de fichiers |
findmnt |
Examiner les montages actifs |
findmnt --verify |
Vérifier la cohérence de fstab |
df -hT |
Voir espace et types des systèmes de fichiers montés |
mount -o ro |
Monter en lecture seule |
mount -o loop |
Monter une image via un loop device |
mount --bind |
Exposer un répertoire à un autre emplacement |
mount -t nfs |
Monter un partage NFS |
mount -t cifs |
Monter un partage SMB/CIFS |
fuser -vm |
Chercher les processus utilisant un montage |
systemctl daemon-reload |
Recharger notamment la configuration systemd après modification de fstab |
Résumé : quelle commande pour quel besoin ?
| Besoin | Exemple |
|---|---|
| Monter une partition | mount /dev/sdb1 /mnt/data |
| Monter en lecture seule | mount -o ro /dev/sdb1 /mnt/data |
| Monter une ISO | mount -o loop,ro image.iso /mnt/iso |
| Monter NFS | mount -t nfs serveur:/partage /mnt/nfs |
| Monter SMB | mount -t cifs //serveur/partage /mnt/smb |
| Monter un répertoire ailleurs | mount --bind /source /destination |
| Créer un montage temporaire en mémoire | mount -t tmpfs tmpfs /mnt/ram |
| Démonter | umount /mnt/data |
| Rendre permanent | /etc/fstab |
| Automonter à l’accès | x-systemd.automount |
Conclusion : monter, c’est construire l’arborescence
Le montage sous Linux est beaucoup plus qu’une commande permettant d’accéder à une clé USB.
C’est l’un des mécanismes fondamentaux qui permettent de construire l’espace de fichiers visible par le système.
Un disque local peut apparaître sous :
/srv/data
un NAS sous :
/srv/backups
une image ISO sous :
/mnt/iso
et un répertoire existant peut être réexposé ailleurs grâce à un bind mount.
Pour l’utilisateur et les applications, tout cela forme pourtant une seule arborescence.
Les règles essentielles restent simples :
- identifiez la source avant de la monter ;
- choisissez un point de montage cohérent ;
- utilisez UUID pour les volumes locaux persistants ;
- utilisez des options adaptées aux ressources réseau ;
- ne stockez pas les mots de passe SMB en clair dans les commandes ;
- démontez proprement les supports ;
- et vérifiez fstab avant de redémarrer.
Un bon montage est celui auquel personne ne pense.
Le disque est là, les applications trouvent leurs fichiers et le serveur démarre normalement.
Un mauvais montage, lui, se manifeste généralement à 3 h du matin sous la forme d’un service bloqué, d’un partage réseau inaccessible et d’un message :
Dependency failed for /srv/data
À cet instant, toute la philosophie Unix tient en une seule question :
« Mais qu’est-ce que j’ai encore mis dans fstab ? »
Montez proprement, vérifiez avant de redémarrer, et votre arborescence pourra continuer à prétendre que tous ces systèmes de fichiers différents ne forment qu’un seul monde cohérent.
Linux ne distribue pas de lettres. Il vous donne un arbre. Évitez simplement de scier la branche sur laquelle / est monté.
