Ceci est une ancienne révision du document !


Fichier /etc/fstab

Quand une clé USB est connectée, elle est normalement montée automatiquement. Idem pour la partition qu'on vient de démarrer et qui porte votre OS. Par contre, les autres partitions du disque ne seront pas montées automatiquement.

Il peut être intéressant de monter automatiquement ces partitions. Il peut aussi être intéressant de spécifier des options de montage (mettre une partition en lecture seule, par exemple).

Les montages automatiques (au démarrage) sont définis dans le fichier /etc/fstab. Ce fichier peut être modifié soit manuellement, soit automatiquement (le logiciel de référence étant GNOME Disques, installé par défaut sur Ubuntu).

Si nécessaire, voir aussi les pages Montage, Systèmes de fichiers, et Partitions.

L'utilitaire graphique GNOME Disques est présent par défaut sur Ubuntu, et il permet de gérer le fichier /etc/fstab de manière fiable sans avoir à l'éditer manuellement !

Pour chaque espace de stockage (partition) concerné, cliquer sur l'icône Options de partition supplémentairesModifier les options de montage…
L'option Monter au démarrage du système aura pour effet d'ajouter une entrée correspondante dans /etc/fstab.

Ceci est très utile après avoir ajouté un disque dur ou un SSD à son ordinateur, ou d'une manière générale après la création d'une nouvelle partition.

Manipuler les fichiers système (et en particulier /etc/fstab) est dangereux. Ne le faites pas si vous ne maîtrisez pas techniquement le sujet.

Les interfaces graphiques sont beaucoup plus intuitives et évitent les erreurs.

Il est dans tous les cas préférable de sauvegarder votre fichier /etc/fstab avant manipulation.

Désignation des supports de stockage

Pour monter une partition, il faut connaître son nom, son label, ou son UUID.

Voir le chapitre Désignation des partitions sur Ubuntu pour plus d'information à ce sujet.

/etc/fstab (et la commande mount) permettent aussi de monter des partages réseau, cloud, etc.

Pour plus d'information à ce sujet, voir le chapitre Partage de fichiers, et en particulier le montage avec rclone.

Le fichier fstab (montage automatique)

Le fichier /etc/fstab liste les partitions qui seront montées automatiquement au démarrage ou à la connexion du périphérique, avec toujours les mêmes options.
Il est composé de plusieurs lignes décrivant chacune les conditions de montage de chaque partition / système de fichier. Le fichier fstab est créé lors de l'installation, avec le montage de la partition principale, et de la swap. Mais on peut y ajouter manuellement des partitions supplémentaires, qui seront alors automatiquement lues par le système au démarrage.

Si le nom d'un point de montage contient un espace, cet espace doit être remplacé dans /etc/fstab par \040

Les bases

Le fichier /etc/fstab suivant résume une configuration classique :

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system>                              <mount point>  <type>   <options>       <dump>  <pass>
# / was on /dev/sda7 during installation
UUID=33b870b8-a81e-4203-a4fd-7affa9f412fb    /               ext4    errors=remount-ro 0     1
# /boot was on /dev/sda5 during installation
/dev/sda5                                    /boot           ext2    defaults          0       2
# /musique was on /dev/sda8 during installation
LABEL=ma-musique                             /musique        ext4    defaults          0       2
# swap was on /dev/sda6 during installation
UUID=2c442228-1991-48c7-bad9-a80dfc8267cf    none            swap    sw                0       0

Ici, le disque principal est sda7, et son swap est sda6. Ces lignes ont été créées par l'installateur. Les partitions additionnelles montées sont sda5 et sda8, et ont été ajoutées à la main.

  1. la colonne <file system> indique la partition elle-même. Il y a plusieurs solutions, mais les 4 principales sont :
    1. l'UUID (Universal Unique Identifier) de la partition. Celle-ci sera obtenue via un sudo blkid, via GNOME Disques, ou via GParted. Un UUID ressemble à cela UUID=2c442228-1991-48c7-bad9-a80dfc8267cf.
    2. La référence directe à la partition sous la forme /dev/sda2 ou /dev/sdb2 (sd signifie disque dur, la lettre est l'ordre du disque dans le boot, et le N° est celui de la partition. /dev/sdb2 est donc la 2e partition du 2e disque dur). Inconvénient de cette méthode : si vous changez le 1er disque de démarrage dans le boot, la signification de sdb2 (par exemple) changera en même temps. l'UUID est donc un identifiant plus stable et plus sûr.
    3. Le LABEL de la partition à monter. On peut en effet donner un nom (label, ou étiquette) à une partition, même si ce n'est pas obligatoire. Dans ce cas, l'identifiant de la colonne <file system> prendra la forme LABEL=nom-partition, où nom-partition est à remplacer par le LABEL réel.
    4. l'adresse IP du disque réseau, collée au nom du répertoire qui s'y trouve et qu'on souhaite monter : 192.168.7.12/rep_a_partager. Dans ce cas, l'identifiant de la colonne <file system> prendra la forme CIFS (il s'agit du protocole SMB).
  2. la colonne <mount point> indique un répertoire quelconque sur la partition principale, et qui servira de point de montage. Pour la partition principale elle-même, c'est évidemment / (la racine). Pour une partition montée additionnelle, on choisit en général (ce n'est pas un emplacement obligatoire) un répertoire /media/xxx (où xxx est le nom que vous choisissez pour la partition de montage). Vous devez créer manuellement cette partition de montage une fois pour toutes par un sudo mkdir /media/xxx. Laissez-la vide, et n'y touchez plus jamais. Elle sert juste d'ancrage au fstab pour son montage.
  3. La colonne <type> donne le type de système de fichiers de la partition montée. Pour une partition linux, c'est souvent ext4.
  4. La colonne <option> permet de choisir des options au montage. Sauf si vous êtes un expert, laissez defaults pour une partition ajoutée par vous au montage. Il en existe beaucoup d'autres (voir le chapitre Options de montage), mais celle-ci suffit la plupart du temps.
  5. la colonne <dump> règle les sauvegardes via l'utilitaire dump. La valeur classique est 0 (dump n'est presque jamais actif ou utilisé).
  6. la colonne <pass> règle la priorité de vérification des erreurs éventuelles du système de fichiers au démarrage. Laissez-y les valeurs par défaut de l'installation. Si vous ajoutez manuellement des partitions, les valeurs de <pass> doivent être:
    • 1 pour la racine (votre partition principale) ⇒ vérif de cette partition en priorité,
    • 2 pour les autres partitions Linux (les partitions "externes" que vous souhaitez monter) ⇒ ce 2 fera les vérifications après la partition racine (démarrage plus rapide),
    • 0 pour le swap et les partitions windows (cf. fstab) ⇒ pas de vérification.

Par exemple une ligne fstab type pour un montage d'une partition linux ext4 sera :

/dev/sdb2                                      /media/toto      ext4     defaults     0     2

ou mieux (l'UUID est plus stable)

UUID=33b870b8-a81e-4203-a4fd-7affa9f412fb      /media/toto      ext4     defaults     0     2

Ces 2 exemples montent pareillement et automatiquement la 2e partition du 2e disque dur.
Autre exemple, celui d'un disque réseau désigné par l'adresse IP/nom_répertoire_à_partager :

//192.168.7.12/rep_a_partager                  /media/toto      cifs     guest,uid=1000,iocharset=utf8  0  0

(0 et non 2 pour la dernière position, car il s'agit d'une partition Windows).

Dans tous les cas, il ne faut pas oublier de créer "l'ancrage" /media/toto par un sudo mkdir /media/toto (remplacez toto par le nom qui vous convient).

Lorsqu'un système de fichiers (partition) est présent dans le fichier /etc/fstab, il est monté automatiquement au démarrage de la machine.
Les utilisateurs peuvent également le démonter manuellement ou le re-monter en tapant umount ou mount /media/xxx (où xxx est le nom de votre répertoire de montage).

Quand vous avez fini de créer votre fstab, vous pouvez le tester sans redémarrer votre PC, via un :

sudo mount -a

Cette commande exécute le fstab comme si votre machine venait de démarrer. C'est plus rapide pour tester différentes configurations.

Format de la partition

Le type de fichiers est normalement détecté par la commande mount. Néanmoins il peut être nécessaire de lui imposer un format :

sudo mount -t [type] /dev/sdc3 /media/stock

[type] est le format de système de fichiers.
Voici les plus fréquents :

etc.

Exemples :

mount -t ext4 /dev/sdc3 /media/stock       # Système de fichiers en ext4
mount -t vfat /dev/sdc3 /media/partage     # Système de fichiers et FAT32
mount -t iso9660 /dev/sdd /media/cdrom     # CD


On peut aussi monter des fichiers, comme par exemple des ISO (images disque) :

mount -o loop ubuntu-cdrom.iso /media/cd-installation

Droits par défaut du volume

Système de fichier Linux

En ce qui concerne les systèmes de fichiers qui prennent en charge la gestion des permissions (comme ext4, Btrfs, UDF, etc.), si vous souhaitez pouvoir écrire dans cette partition en tant que simple utilisateur, vous devez changer les permissions ou l'appartenance du répertoire racine de la partition.

Dans notre exemple précédent, si /dev/sdc3 est formaté en ext4 :
Après avoir monté la partition dans /media/stock :

sudo chown utilisateur /media/stock

Désormais cette partition appartient à l'utilisateur, peu importe où elle sera montée ensuite.
(Les droits sont attachés au répertoire racine de la partition et non au répertoire du point de montage.)

Système de fichier non Linux

Voir la colonne Gestion des droits d'accès dans le tableau de comparaison de systèmes de fichiers.

Cas concret : vous avez une partition en FAT32 sur votre disque dur et vous voudriez, en tant qu'utilisateur lambda, pouvoir lire et écrire dessus.
Le système de fichier FAT32 ne spécifiant aucun droit, nous devons les lui spécifier lors du montage. Il faut alors indiquer à mount la valeur de umask adéquate grâce à l'option homonyme :

sudo mount -o umask=0 /dev/hda7 /media/win_d

Cette méthode a un inconvénient : les autorisations en exécution sont nécessaires pour les répertoires mais pénibles pour les fichiers. On peut alors préciser un umask pour chacun d'eux :

sudo mount -o fmask=111 -o dmask=0 /dev/hda7 /media/win_d

Vous pouvez également restreindre les droits en montant le système de fichier en lecture seule (c'est-à-dire avec aucun droit en écriture). L'option -o umask=0222 est alors toute indiquée.

Options

Les options disponibles pour la colonne <option> du fichier doivent être séparées par une virgule , sans espace, et permettent une utilisation avancée du système.

Les options sont communes à la commande mount et à d'autres méthodes de montage. Elles sont donc listées dans le chapitre Options de montage.

Masquer le montage d'une partition

Dans certains contextes, il peut être intéressant de ne pas monter automatiquement une partition et de la masquer aux techniques de montage en mode graphique. Cela n'exclut pas une possibilité de montage en ligne de commande.

Par exemple, pour masquer la partition contenant le système Windows, les deux lignes à ajouter pourraient être

##   Masquer le montage de la partition Windows qui est sur sda5
/dev/sda5	none	ignore	defaults	0	0

Le fichier mtab

Le fichier /etc/mtab contient la liste des montages effectués, que ce soit via fstab ou en ligne de commande avec mount. Il peut être utile de visualiser son contenu pour vérifier qu'un montage est effectif.

Mieux encore, il peut servir de base, après un test avec mount, pour modifier le fichier fstab. Voir le tutoriel Monter un volume automatiquement à ce sujet.

Monter un répertoire avec l'option "bind"

Il est parfois utile de monter non pas un volume, mais un répertoire dans un autre. Ceci peut ressembler à un lien logique mais c'est beaucoup plus puissant, notamment :

  • pour permettre l'accès à un sous-répertoire en interdisant l'accès à l'un de ses parents ($HOME par exemple)
  • pour le chroot d'un compte FTP
  • pour monter des fichiers dans un système de fichiers en lecture seule (où on ne peut donc pas créer de liens)
  • pour monter des fichiers (fichiers compressés squashfs, …)

Cela est possible avec l'option –bind de la commande mount.

Par exemple, dans le cas où /mnt/read-only est en lecture seule et où on veut remplacer /mnt/read-only/mauvais-fichier par /home/linux/bon-fichier :

mount --bind /home/linux/bon-fichier /mnt/read-only/mauvais-fichier

Ou si on veut rendre un répertoire privé public sans donner un accès général à son $HOME :

mount --bind /home/moi/répertoire-à-partager /home/partage

Le contenu de /home/moi/répertoire-à-partager et celui de /home/partage est et restera similaire quelles que soient les modifications.
Ici, les permissions du répertoire-à-partager lui-même et de son contenu ne changent pas non plus : si vous voulez adapter les permissions pour les autres utilisateurs, il faudra modifier aussi les droits de /home/moi/dossier-à-partager mais il est inutile (et largement déconseillé) que les autres utilisateurs aient accès à /home/moi.

Pour rendre persistants ces montages, on peut les déclarer dans /etc/fstab comme habituellement :

# /etc/fstab: static file system information.
# <file system>               <mount point>                 <type>  <options>  <dump>  <pass>
[…]
# Un montage bind :
/home/linux/bon-fichier   /mnt/read-only/mauvais-fichier     none       bind      0   0

Problèmes connus

UUID non valides

Le fichier fstab peut vouloir monter des partitions avec des erreurs dans les identifiants UUID.

Ce script permet de vérifier que tous les UUID sont correctes dans le fstab :

monfic.sh
#!/bin/sh
 
fstabUUID="$(sed -nE 's/UUID=([^ ]+) .*/\1/p' /etc/fstab)"
validUUID="$(ls -1 /dev/disk/by-uuid)"
 
nbUUIDValid=0
 
for uuid in $fstabUUID
do
	if echo "$validUUID" | grep -q "$uuid"
	then
		echo "$uuid OK"
		nbUUIDValid=$((nbUUIDValid+1))
	else
		echo "$uuid est dans fstab mais pas dans /dev/disk/by-uuid"
	fi
done
 
echo "nombre d'UUID dans fstab : $(echo "$fstabUUID" | wc -l)"
echo "nombre d'UUID validé(s) : $nbUUIDValid"

Répertoire de montage inexistant

Il arrive que le répertoire de montage n'existe pas. Dans ce cas, la commande mount renvoie une erreur explicite. Il suffit de le recréer.
Toujours dans notre exemple : (l'option -p permet de créer récursivement les répertoires parents s'il n'existent pas)

sudo mkdir -p /media/stock

Fichiers occupés

Un système de fichier ne peut être démonté tant que certains de ses fichiers sont ouverts par des processus.
Le cas le plus simple est que le répertoire de travail actuel est dans le volume que vous voulez démonter. Sinon, la commande lsof permet de lister tous les fichiers ouverts. En arrêtant les processus qui utilisent le volume, le démontage devient possible.
Par exemple :

sudo lsof | grep /media/stock 

(grep permet de n'afficher que les lignes contenant "/media/stock")

Les logiciels utilisant un volume sont perdus

Imaginons que vous ayez renommé le répertoire de montage de /media/moi/stock en /home/moi/stockage.

Il est possible que des logiciels utilisent des fichiers dans /media/moi/stock ; Pour éviter des problèmes de fonctionnement, vous pouvez (si vous pensez que c'est nécessaire) créer un lien symbolique de l'ancien point de montage vers le nouveau :

  • Assurez-vous que rien n'est monté dans /media/moi/stock :
    ls /media/moi/stock
  • Supprimez l'ancien point de montage :
    sudo rmdir /media/moi/stock
  • Créez un lien :
    ln -s /home/moi/stockage /media/moi/stock

Problèmes rencontrés lors de l'ajout d'un disque dur secondaire

Édition

Une erreur peut survenir lorsque l'on tente d'éditer le fichier fstab (avec gedit par exemple) Si le message suivant apparaît :

(gedit:...): Gtk-WARNING **

il est préférable d'utiliser un éditeur de texte « graphique » qui propose un mode administrateur, par exemple :

gedit admin:///etc/fstab

ou un éditeur de texte en mode console :

sudoedit /etc/fstab

qui sous ×buntu équivaut à :

sudo nano /etc/fstab
Permissions

Une fois que la partition du disque supplémentaire est ainsi ajoutée dans le fichier fstab :

 # /sauvegarde  sur /dev/sdb1 ajoutée le...
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  /sauvegarde  ext4  rw,suid,dev,noexec,auto,nouser,async,noatime  0  2

et son point de montage créé :

sudo mkdir /sauvegarde

Comme ce dernier appartient à root, aucun autre utilisateur n'a le droit d'y écrire.

On peut se rendre propriétaire du point de montage - sachant que par conséquent seul cet utilisateur aura le droit d'écrire dans toute cette partition.

Le répertoire qui sert de point de montage à une partition appartient par défaut à root:root avec droits rwxr-xr-x (ou 755) car il s'agit d'un élément matériel (une partition) géré par le système.

C'est sur les éléments de données écrits dans cette partition qu'il faut ajuster les droits et permissions afin de les adapter à votre utilisation :
  • soit sur les éléments eux-mêmes pour les systèmes de fichiers UNIX - compatibles Linux (qui gèrent les droits et permissions nativement)
  • soit sur l'ensemble des données montées, via les options appliquées à leur montage, pour les systèmes de fichiers NON UNIX (Microsoft, etc.).

Idéalement sur une partition on crée 2 répertoires par utilisateur potentiel :

  • un « principal » lui appartenant, dans lequel il pourra écrire, modifier, supprimer… ranger toutes ses affaires
  • un répertoire corbeille, appartenant aussi à cet utilisateur (sous Linux, il y a une corbeille par partition et par utilisateur.)

Rappelons qu'un chmod 777 est DANGEREUX :
un élément qui porte les droits rwxrwxrwx accorde tous les droits à quiconque y accédant (localement ou à distance) et permet entre autre de créer et exécuter des scripts.

Si on est seul utilisateur du pc, ceci suffirait (mais n'est pas idéal car restrictif) :

sudo chown $USER:$USER /sauvegarde

Dans le cadre d'une utilisation familiale, avec plusieurs utilisateurs toto, tata et titi, et un groupe appelé, disons famille, on procédera autrement (voir les explications) :

sudo chown root:root /sauvegarde
sudo chmod 755 /sauvegarde
  • on crée à la racine de cette partition les dossiers pour chaque utilisateur toto, tata, titi et famille :
sudo mkdir /sauvegarde/{toto,tata,titi,famille}
  • on attribue chacun de ces répertoires à ses propriétaires adéquats :
sudo chown toto:toto  /sauvegarde/toto
sudo chown tata:tata  /sauvegarde/tata
sudo chown titi:titi  /sauvegarde/titi
sudo chown root:famille  /sauvegarde/famille

Pour que les utilisateurs tata, titi et toto, membres du groupe famille, puissent écrire dans le dossier famille on s'assure que :

  • ce répertoire ( dont les propriétaires sont l'utilisateur root et le groupe famille) accorde le droit d'écriture au groupe famille,
  • les éléments créés dans ce répertoire « héritent » les droits et permissions du groupe propriétaire de ce répertoire
sudo chmod 2775 /sauvegarde/famille     # le 2 signifiant bit sgid

Dorénavant :

  • seul l'utilisateur toto peut écrire, modifier, supprimer des éléments dans son répertoire /sauvegarde/toto, les autres peuvent seulement lire et accéder à ce répertoire ;
  • seul l'utilisateur tata peut écrire, modifier, supprimer des éléments dans son répertoire /sauvegarde/tata, les autres peuvent seulement lire et accéder à ce répertoire ;
  • seul l'utilisateur titi peut écrire, modifier, supprimer des éléments dans son répertoire /sauvegarde/titi, les autres peuvent seulement lire et accéder à ce répertoire ;
  • seuls les utilisateurs membres du groupe famille peuvent écrire, modifier, supprimer des éléments dans le répertoire /sauvegarde/famille, les autres peuvent seulement lire et accéder à ce répertoire.

Si vous souhaitez que seuls les membres du groupe famille puissent accéder au répertoire /sauvegarde/famille, alors :

sudo chmod 2770 /sauvegarde/famille

En l'état dans ce répertoire /sauvegarde/famille tous les membres du groupe famille peuvent effacer n'importe quel élément : toto pourrait effacer un élément appartenant à titi ou tata, et vice-versa. Si vous souhaitez restreindre la possibilité d'effacer à seulement l'utilisateur propriétaire d'un élément, alors :1)

sudo chmod 3770 /sauvegarde/famille     # 3 signifiant sticky bit + bit sgid = 1+2

Enfin, pour avoir le lien vers sauvegarde dans le volet de gauche de votre gestionnaire de fichiers, il sera nécessaire de vous rendre manuellement dans ce répertoire, puis de lui attribuer un signet ou marque-page (le nom et la méthode varient selon votre gestionnaire de fichiers).
OU
plutôt que de créer ce point de montage /sauvegarde à la racine de votre système, créez le dans le répertoire /media :

  • tout élément visible dans ce répertoire conventionnel apparaît automatiquement dans le volet latéral de la plupart des gestionnaires de fichiers (sous Périphériques ou Autres emplacements selon le gestionnaire).
  • par ailleurs les applications confinées (type snap ou Flatpak) se généralisant, un tel point de montage directement à la racine système leur est inaccessible.

Voir aussi

Autres pages sur le sujet