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 évidemment pour la partition sur laquelle se trouve le système qu'on vient de démarrer. Par contre, les autres partitions du disque ne seront pas montées automatiquement.
Il suffit généralement de cliquer dessus avec le gestionnaire de fichiers (GNOME Fichiers), mais il peut aussi ê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).

Cette page traite principalement de son édition manuelle.

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.

Pour en savoir plus, voir les chapitres GNOME Disques et Monter une partition automatiquement au démarrage.

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.

Édition

Pour éditer le fichier /etc/fstab avec les permissions administrateur (requiert le mot de passe), il existe deux possibilités :

  • utiliser un éditeur de texte "graphique" qui propose un mode administrateur, par exemple :
    • avec l'éditeur de texte par défaut depuis la version Kinetic 22.10 de Ubuntu (GNOME) :
      gted admin:///etc/fstab
    • ou (pour les versions d'Ubuntu antérieures) :
      gedit admin:///etc/fstab
  • ou avec un éditeur de texte en mode console :
    sudoedit /etc/fstab

    qui sous ×buntu équivaut à :

    sudo nano /etc/fstab

Désignation des supports de stockage

Pour monter une partition, il faut connaître son identifiant, 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.

Contenu du fichier fstab

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 fichiers. Le fichier /etc/fstab est créé lors de l'installation, avec le montage de la partition principale (système), 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, la partition système est /dev/sda7, et le swap est /dev/sda6. Ces lignes ont été créées par l'installateur. Les partitions additionnelles montées sont /dev/sda5 et /dev/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 :
    • 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.
    • La référence directe à la partition sous la forme /dev/sda2 ou /dev/sdb2 (dev signifie appareil, sd signifie connexion SATA, la lettre est le numéro de connexion, et le numéro est celui de la partition. /dev/sdb2 est donc la 2e partition du 2e support SATA). Inconvénient de cette méthode : si vous changez le 1er support de démarrage dans le BIOS, la signification de /dev/sdb2 (par exemple) changera en même temps. L'UUID est donc un identifiant plus stable et plus sûr.
    • 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.
    • l'adresse IP du serveur de stockage 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 /mnt/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 /mnt/xxx. Laissez-la vide, et n'y touchez plus jamais. Elle sert juste de point de montage 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. Voir le chapitre Format de la partition pour plus d'informations à ce sujet. Des valeurs spécifiques sont aussi possibles :
    • On peut généralement utiliser auto et laisser l'ordinateur détecter le format de fichiers.
    • Le type bind permet de monter un répertoire sur un autre (voir Bind mount).
    • ignore rend le volume "invisible" (voir Masquer le montage d'une partition).
  4. La colonne <option> permet de choisir des options de 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 est obsolète).
  6. la colonne <pass> règle la priorité de vérification (avec l'utilitaire fsck) 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> peuvent être :
    • 1 pour la partition système (montée à la racine /) ⇒ vérification prioritaire de cette partition
    • 2 pour les autres partitions Linux (les partitions locales tierces que vous souhaitez monter) ⇒ ce 2 fera les vérifications après la partition racine (ce qui rend le démarrage plus rapide)
    • 0 pour le swap, les partitions Windows (cf. fstab), et les stockages réseau ⇒ pas de vérification.

Exemples

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

  • /dev/sdb1                                  /mnt/stock      ext4     defaults     0     2
  • ou mieux (l'UUID est plus fiable) :
    UUID=33b870b8-a81e-4203-a4fd-7affa9f412fb  /mnt/stock      ext4     defaults     0     2
  • ou encore mieux (un label est plus éloquent) :
    LABEL=stock                                /mnt/stock      ext4     defaults     0     2

Ces 3 exemples montent pareillement et automatiquement la première (1) partition, nommée stock, du 2e support (b) connecté en SATA (sd).

Autre exemple, celui d'un partage réseau (protocole SMB) nommé partage, accessible à l'adresse IP 192.168.1.10, grâce à CIFS VFS :

//192.168.1.10/partage                          /mnt/partage    cifs     _netdev,guest,uid=1000,iocharset=utf8  0  0

(0 et non 2 pour la dernière position, car il s'agit d'un partage réseau).

Pour les stockages réseau, voir aussi Montage.

Point de montage

Dans tous les cas, il ne faut pas oublier de créer le point de montage par exemple pour /mnt/stock :

sudo mkdir /mnt/stock

(remplacer stock par le nom qui convient).

Validation

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 (umount) ou le re-monter (mount /mnt/xxx, où xxx est le nom de votre répertoire de montage).

Quand vous avez fini d'éditer le fichier /etc/fstab, vous pouvez le tester sans redémarrer votre PC, via un :

sudo mount -a

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

La commande mount seule permet de lister les volumes montés.

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 une partition et de la masquer aux techniques de montage en mode graphique, en indiquant ignore comme <type>. Ceci n'exclut pas la possibilité de montage manuel avec d'autres méthodes.

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 /dev/sda5
/dev/sda5	none	ignore	defaults	0	0

Le fichier mtab

Le fichier /etc/mtab contient la liste des supports montés, que ce soit via /etc/fstab, automatiquement par le bureau, avec la commande mount, ou autres méthodes. 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.
À ce sujet, voir le tutoriel Monter un volume automatiquement.

Problèmes courants

Voir aussi la section Problèmes courants de la page concernant le montage en général.

UUID non valides

Le fichier /etc/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"

Permissions

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

# /dev/sdb1 sur /mnt/sauvegarde
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX  /mnt/sauvegarde  ext4  rw,suid,dev,noexec,auto,nouser,async,noatime  0  2

et son point de montage créé :

sudo mkdir /mnt/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 /mnt/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 /mnt/sauvegarde
sudo chmod 755 /mnt/sauvegarde
  • on crée à la racine de cette partition les dossiers pour chaque utilisateur toto, tata, titi et famille :
sudo mkdir /mnt/sauvegarde/{toto,tata,titi,famille}
  • on attribue chacun de ces répertoires à ses propriétaires adéquats :
sudo chown toto:toto  /mnt/sauvegarde/toto
sudo chown tata:tata  /mnt/sauvegarde/tata
sudo chown titi:titi  /mnt/sauvegarde/titi
sudo chown root:famille  /mnt/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 /mnt/sauvegarde/famille     # le 2 signifiant bit sgid

Dorénavant :

  • seul l'utilisateur toto peut écrire, modifier, supprimer des éléments dans son répertoire /mnt/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 /mnt/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 /mnt/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 /mnt/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 /mnt/sauvegarde/famille, alors :

sudo chmod 2770 /mnt/sauvegarde/famille

En l'état dans ce répertoire /mnt/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 /mnt/sauvegarde/famille     # 3 signifiant sticky bit + bit sgid = 1+2

Voir aussi