MOUNT(2) Manuel du programmeur Linux MOUNT(2)

mount - Monter un système de fichiers

#include <sys/mount.h>
int mount(const char *source, const char *target,
          const char *filesystemtype, unsigned long mountflags,
          const void *data);

mount() attache le système de fichiers indiqué par source (qui est généralement un nom de périphérique, mais peut aussi être un répertoire ou un objet fictif) à un emplacement (un répertoire ou à un fichier) indiqué par le chemin dans target.

Des privilèges appropriés (sous Linux : la capacité CAP_SYS_ADMIN) sont nécessaires pour monter des systèmes de fichiers.

Les valeurs de l'argument filesystemtype prises en charge par le noyau sont listées dans /proc/filesystems (par exemple « btrfs » « ext4 », « jfs », « xfs », « vfat », « fuse », « tmpfs », « cgroup », « proc », « mqueue », « nfs », « fifs », « iso9660 »). Des types supplémentaires peuvent être disponibles lorsque les modules appropriés sont chargés.

The data argument is interpreted by the different filesystems. Typically it is a string of comma-separated options understood by this filesystem. See mount(8) for details of the options available for each filesystem type. This argument may be specified as NULL, if there are no options.

Un appel à mount() effectue un des nombreux types généraux d'opération en fonction des bits indiqués dans mountflags. Le choix de l'opération à effectuer se fait en testant l'ensemble de bits mountflags, les tests étant menés dans l'ordre indiqué ici :

  • Remonter un montage existant : mountflags inclut MS_REMOUNT.
  • Créer un montage miroir : mountflags inclut MS_BIND.
  • Modifier le type de propagation d'un montage existant : mountflags inclut MS_SHARED, MS_PRIVATE, MS_SLAVE ou MS_UNBINDABLE.
  • Déplacer un point de montage existant vers un nouvel endroit : mountflags inclut MS_MOVE.
  • Créer un nouveau montage : mountflags n'inclut aucun des attributs ci-dessus.

Chacune de ces opérations est détaillée plus tard dans cette page. D'autres attributs peuvent être indiqués dans mountflags pour modifier le comportement de mount(), comme décrits ci-dessous.

La liste ci-dessous décrit les attributs supplémentaires qui peuvent être indiqués dans mountflags. Remarquez que certains types d'opération ignorent tout ou partie d'autres attributs, comme décrits plus loin dans cette page.

Rendre synchrones les modifications sur les répertoires du système de fichiers. (Cette propriété peut être obtenue pour les répertoires individuels ou les sous‐arborescences en utilisant chattr(1).)
Réduire les mises à jour sur disque des horodatages d'inœuds (atime, mtime, ctime) en gardant seulement en mémoire ces changements. Les horodatages sur le disque sont mis à jour quand :
(a)
l'inœud doit être mis à jour pour certains changements non liés aux horodatages du fichier ;
(b)
l'application utilise fsync(2), syncfs(2) ou sync(2) ;
(c)
un inœud non effacé est évincé de la mémoire ;
(d)
plus de 24 heures sont passées depuis que l'inœud a été écrit sur le disque.
Cette option de montage réduit significativement les écritures nécessaires pour mettre à jour les horodatages de l'inœud, surtout mtime et atime. Cependant, si un système plante, les champs atime et mtime du disque pourraient être périmées jusqu'à un maximum de 24 heures.
Parmi les exemples de charge de travail où cette option peut représenter un grand intérêt, on trouve les écritures fréquentes aléatoires dans des fichiers préalloués, ainsi que les cas où l'option de montage MS_STRICTATIME est également activée (l'avantage de combiner MS_STRICTATIME et MS_LAZYTIME est que stat(2) renverra l'atime correctement mis à jour, mais les mises à jour atime ne seront envoyées sur le disque que dans les cas listés ci-dessus).
Autoriser les verrouillages impératifs sur les fichiers de ce système de fichiers (le verrouillage impératif devra toutefois être validé fichier par fichier, comme décrit dans fcntl(2)). Depuis Linux 4.5, cette option de montage exige la capacité CAP_SYS_ADMIN et un noyau configuré avec l'option CONFIG_MANDATORY_FILE_LOCKING.
Ne pas mettre à jour les dates d'accès pour (tous) les fichiers du système de fichiers.
Ne pas autoriser l’accès aux périphériques (fichiers spéciaux) sur le système de fichiers.
Ne pas mettre à jour les dates d'accès pour les répertoires du système de fichiers. Cet attribut fournit un sous-ensemble de la fonctionnalité fournie par MS_NOATIME ; c'est-à-dire, MS_NOATIME implique MS_NODIRATIME.
Ne pas permettre l'exécution de programmes depuis le système de fichiers.
Do not honor set-user-ID and set-group-ID bits or file capabilities when executing programs from this filesystem. In addition, SELinux domain transitions require the permission nosuid_transition, which in turn needs also the policy capability nnp_nosuid_transition.
Monter le système de fichiers en lecture seule.
Utilisé avec MS_BIND pour créer un montage miroir récursif, et ajouté aux attributs de type de propagation, pour modifier récursivement le type de propagation de tous les montages d'une sous-arborescence. Voir ci-dessous pour plus de détails.
Lorsqu'un fichier sur ce système de fichiers est utilisé, ne mettre à jour sa date d'accès (atime) que si la valeur actuelle de atime est inférieure ou égale à sa date de dernière modification (mtime) ou de changement d'état (ctime). Cette option est utile pour les programmes tels que mutt(1) qui veulent savoir si un fichier a été lu depuis sa dernière modification. Depuis Linux 2.6.30, les noyaux suivent le comportement fourni par cet attribut (à moins que MS_NOATIME soit indiqué), et l’attribut MS_STRICTATIME est nécessaire pour avoir la sémantique traditionnelle. De plus, depuis Linux 2.6.30, la date du dernier accès à un fichier est toujours mise à jour s'il est plus ancienne d'un jour.
Supprimer l'affichage de certains messages d'avertissement (printk()) dans le journal noyau. Cet attribut remplace l'attribut MS_VERBOSE qui avait un mauvais nom et est obsolète (il était disponible depuis Linux 2.4.12), et qui a la même signification.
Toujours mettre à jour la date du dernier d'accès (atime) lorsque des fichiers sur le système de fichiers sont lus (c'était le comportement par défaut avant Linux 2.6.30). Indiquer cet attribut annule l'effet des attributs MS_NOATIME et MS_RELATIME.
Rendre synchrones les écritures sur le système de fichiers (comme si l'option O_SYNC de open(2) était indiquée à chaque appel sur ce système de fichiers).
Ne pas suivre les liens symboliques lors de la résolution des chemins. Des liens symboliques peuvent toujours être créés et readlink(1), readlink(2), realpath(1) ainsi que realpath(3) fonctionneront encore correctement.

De Linux 2.4 jusqu'à aujourd'hui, certains des attributs ci-dessus sont positionnables sur une base par montage, tandis que d'autres s'appliquent au superbloc du système de fichier monté, ce qui veut dire que tous les montages du même système de fichiers partagent ces attributs (précédemment, tous les attributs étaient sur une base par superbloc).

Les attributs par point de montage sont les suivants :

  • Depuis Linux 2.4 : les attributs MS_NODEV, MS_NOEXEC et MS_NOSUID sont positionnables sur une base par point de montage.
  • En outre, depuis Linux 2.6.20 : MS_RELATIME et MS_NODIRATIME.
  • De plus, depuis Linux 2.6.20 : MS_RELATIME.

The following flags are per-superblock: MS_DIRSYNC, MS_LAZYTIME, MS_MANDLOCK, MS_SILENT, and MS_SYNCHRONOUS. The initial settings of these flags are determined on the first mount of the filesystem, and will be shared by all subsequent mounts of the same filesystem. Subsequently, the settings of the flags can be changed via a remount operation (see below). Such changes will be visible via all mounts associated with the filesystem.

Depuis Linux 2.6.16, MS_RDONLY peut être positionné ou effacé sur une base par point de montage ou par superbloc du système de fichiers sous-jacent. Le système de fichiers monté ne sera accessible en écriture que si ni lui, ni le point de montage, n'ont l’attribut de lecture seule.

Un montage existant peut être remonté en utilisant MS_REMOUNT dans mountflags. Cela permet de modifier mountflags et data du montage existant sans être obligé de démonter et de remonter le système de fichiers. target devrait valoir la même valeur que celle indiquée dans l'appel mount() initial.

Les arguments source et filesystemtype sont ignorés.

Les arguments mountflags et data devraient correspondre aux valeurs utilisées dans l'appel mount() originel, sauf ceux qui seront délibérément modifiés.

The following mountflags can be changed: MS_LAZYTIME, MS_MANDLOCK, MS_NOATIME, MS_NODEV, MS_NODIRATIME, MS_NOEXEC, MS_NOSUID, MS_RELATIME, MS_RDONLY, MS_STRICTATIME (whose effect is to clear the MS_NOATIME and MS_RELATIME flags), and MS_SYNCHRONOUS. Attempts to change the setting of the MS_DIRSYNC and MS_SILENT flags during a remount are silently ignored. Note that changes to per-superblock flags are visible via all mounts of the associated filesystem (because the per-superblock flags are shared by all mounts).

Depuis Linux 3.17, si ni MS_NOATIME, ni MS_NODIRATIME, ni MS_RELATIME, ni MS_STRICTATIME n'est indiqué dans mountflags, l'opération de remontage préserve les valeurs existantes de ces attributs (au lieu de revenir à MS_RELATIME par défaut).

Since Linux 2.6.26, the MS_REMOUNT flag can be used with MS_BIND to modify only the per-mount-point flags. This is particularly useful for setting or clearing the "read-only" flag on a mount without changing the underlying filesystem. Specifying mountflags as:


MS_REMOUNT | MS_BIND | MS_RDONLY

will make access through this mountpoint read-only, without affecting other mounts.

Si mountflags comprend MS_BIND (disponible depuis Linux 2.4), effectuer un montage miroir. Un montage miroir rend visible un fichier ou la sous-arborescence d'un répertoire à un autre endroit d'une même hiérarchie de répertoires. Les montages miroir peuvent franchir les limites du système de fichiers et outrepasser les verrous chroot(2).

Les paramètres filesystemtype et data sont ignorés.

The remaining bits (other than MS_REC, described below) in the mountflags argument are also ignored. (The bind mount has the same mount options as the underlying mount.) However, see the discussion of remounting above, for a method of making an existing bind mount read-only.

Par défaut, quand un répertoire est monté en miroir, seul ce répertoire est monté ; s'il y a des sous-montages dans l'arborescence de répertoires, ils ne sont pas montés en miroir. Si l'attribut MS_REC est indiqué également, une opération de montage miroir récursif est effectuée : tous les sous-montages de la sous-arborescnece de source (sauf les montages qu'il n'est pas possible de monter en miroir) sont également montés en miroir à l'endroit correspondant dans la sous-arborescence target.

Si mountflags comprend MS_SHARED, MS_PRIVATE, MS_SLAVE ou MS_UNBINDABLE (disponibles depuis Linux 2.6.15), le type de propagation d'un montage existant est modifié. Si plus d'un de ces attributs est indiqué, cela provoque une erreur.

Les seuls autres attributs qui peuvent être indiqués pendant un changement de type de propagation sont MS_REC (décrit ci-dessous) et MS_SILENT (qui est ignoré).

Les paramètres source, filesystemtype et data sont ignorés.

Voici la signification des attributs de types de propagation :

Make this mount shared. Mount and unmount events immediately under this mount will propagate to the other mounts that are members of this mount's peer group. Propagation here means that the same mount or unmount will automatically occur under all of the other mounts in the peer group. Conversely, mount and unmount events that take place under peer mounts will propagate to this mount.
Make this mount private. Mount and unmount events do not propagate into or out of this mount.
If this is a shared mount that is a member of a peer group that contains other members, convert it to a slave mount. If this is a shared mount that is a member of a peer group that contains no other members, convert it to a private mount. Otherwise, the propagation type of the mount is left unchanged.
When a mount is a slave, mount and unmount events propagate into this mount from the (master) shared peer group of which it was formerly a member. Mount and unmount events under this mount do not propagate to any peer.
A mount can be the slave of another peer group while at the same time sharing mount and unmount events with a peer group of which it is a member.
Rendre impossible un montage en miroir. C'est comme un montage privé mais en plus, il n'est pas possible de monter ce montage en miroir. Quand un montage miroir (mount() avec les attributs MS_BIND et MS_REC) récursif est effectué dans une sous-arborescence de répertoire, tous les points de montage qu'il n'est pas possible de monter en miroir dans la sous-arborescence sont automatiquement éliminés (c'est-à-dire non répliqués) lors de la réplication de cette sous-arborescence pour générer la sous-arborescence cible.

By default, changing the propagation type affects only the target mount. If the MS_REC flag is also specified in mountflags, then the propagation type of all mounts under target is also changed.

Pour plus de détails sur les types de propagation des montages (notamment celui par défaut affecté aux nouveaux montages), voir mount_namespaces(7).

If mountflags contains the flag MS_MOVE (available since Linux 2.4.18), then move a subtree: source specifies an existing mount and target specifies the new location to which that mount is to be relocated. The move is atomic: at no point is the subtree unmounted.

Les autres bits du paramètre mountflags sont ignorés, ainsi que les paramètres filesystemtype et data.

If none of MS_REMOUNT, MS_BIND, MS_MOVE, MS_SHARED, MS_PRIVATE, MS_SLAVE, or MS_UNBINDABLE is specified in mountflags, then mount() performs its default action: creating a new mount. source specifies the source for the new mount, and target specifies the directory at which to create the mount point.

Les paramètres filesystemtype et data sont utilisés et d'autres bits peuvent être indiqués dans mountflags pour modifier le comportement de l'appel.

On success, zero is returned. On error, -1 is returned, and errno is set to indicate the error.

Les erreurs détaillées ici sont indépendantes du type de système de fichiers. Chaque type de système peut avoir des codes d'erreurs spécifiques, et un comportement particulier. Consultez les sources du noyau Linux pour plus de détails.

Un élément du chemin d'accès ne permet pas le parcours (consultez aussi path_resolution(7)).
Le montage d'un système de fichiers en lecture seule a été tenté sans donner l'attribut MS_RDONLY.
Le système de fichiers peut être en lecture seule pour diverses raisons, dont : il réside sur un disque optique en lecture seule ; il se trouve sur un périphérique possédant un commutateur physique positionné sur lecture seule ; l'implémentation du système de fichiers a été compilée avec la prise en charge de la lecture seulement ; ou des erreurs ont été détectées lors du montage initial du système de fichiers. Il est donc marqué en lecture seule et ne peut pas être remonté en lecture-écriture (jusqu'à ce que les erreurs soient corrigées).
Certains systèmes de fichiers renvoient plutôt l'erreur EROFS si on essaie de monter un système de fichiers en lecture seule.
Le périphérique bloc source se trouve sur un système de fichiers monté avec l'option MS_NODEV.
Tentative d'empiler un nouveau montage directement sur un point de montage existant créé dans cet espace de noms montage avec la même source et la même target.
source ne peut pas être remonté en lecture seule car il a encore des fichiers ouverts en écriture.
L'un des arguments pointe en dehors de l'espace d'adressage accessible.
source avait un superbloc non valable.
Tentative d'une opération de remontage (MS_REMOUNT) mais source n'était pas déjà monté sur target.
A move operation (MS_MOVE) was attempted, but the mount tree under source includes unbindable mounts and target is a mount that has propagation type MS_SHARED.
Tentative d'une opération de déplacement (MS_MOVE), mais le montage parent du montage source a un type de propagation MS_SHARED.
A move operation (MS_MOVE) was attempted, but source was not a mount, or was '/'.
Une opération miroir (MS_BIND) a été demandée alors que source renvoyait à un lien magique d'espace de noms de montage (c'est-à-dire à un lien magique /proc/[pid]/ns/mnt ou à un montage miroir vers un tel lien) et le type de propagation du montage parent de target était MS_SHARED, mais la propagation du montage miroir demandée créerait une dépendance circulaire qui pourrait empêcher l'espace de noms de montage d'être libéré.
mountflags comprend plus d'un MS_SHARED, MS_PRIVATE, MS_SLAVE ou MS_UNBINDABLE.
mountflags comprend un MS_SHARED, MS_PRIVATE, MS_SLAVE ou MS_UNBINDABLE ainsi qu'un autre attribut que MS_REC ou MS_SILENT.
Tentative de monter en miroir un montage impossible à monter ainsi.
Dans un espace de noms montage non privilégié (c'est-à-dire appartenant à un espace de noms utilisateur créé par un utilisateur non privilégié), tentative d'opération de montage en miroir (MS_BIND) sans indiquer MS_REC, qui aurait révélé une arborescence de système de fichiers en-dessous d'un des sous-montages du répertoire à refléter.
Trop de liens rencontrés dans la résolution du chemin d'accès.
Tentative d'une opération de déplacement ou target est un descendant de source.
(Dans le cas où un périphérique bloc n'est pas nécessaire :) Table de périphériques factices pleine.
Un des arguments est plus long que MAXPATHLEN.
filesystemtype n'est pas configuré dans le noyau.
Un des chemins est vide ou a un composant inexistant.
Le noyau n'a pas pu allouer suffisamment de mémoire.
source n'est pas un périphérique bloc (et un périphérique était nécessaire).
target ou un préfixe de source n'est pas un répertoire.
Le nombre majeur du périphérique bloc source est non autorisé.
L'appelant n'a pas les privilèges appropriés.
An attempt was made to modify (MS_REMOUNT) the MS_RDONLY, MS_NOSUID, or MS_NOEXEC flag, or one of the "atime" flags (MS_NOATIME, MS_NODIRATIME, MS_RELATIME) of an existing mount, but the mount is locked; see mount_namespaces(7).
Tentative de montage d'un système de fichiers en lecture seule sans donner l'attribut MS_RDONLY. Voir EACCES ci-dessus.

Les définitions de MS_DIRSYNC, MS_MOVE, MS_PRIVATE, MS_REC, MS_RELATIME, MS_SHARED, MS_SLAVE, MS_STRICTATIME et MS_UNBINDABLE ont été ajoutées aux en-têtes de la glibc depuis la version 2.12.

Cette fonction est spécifique à Linux et ne doit pas être employée dans des programmes destinés à être portables.

Depuis Linux 2.4 un même système de fichiers peut être visible en différents points, et plusieurs montages peuvent être empilés au même point.

L'argument mountflags peut avoir le nombre magique 0xC0ED (MS_MGC_VAL) dans ses 16 bits de poids fort (tous les autres attributs abordés dans DESCRIPTION sont dans les 16 bits de poids faible de mountflags). L'indication de MS_MGC_VAL était obligatoire dans les noyaux des versions antérieure à 2.4, mais depuis ne l'est plus et est ignoré si vous le faites.

L'attribut original MS_SYNC a été renommé MS_SYNCHRONOUS dans Linux 1.1.69 car un MS_SYNC différent a été ajouté dans <mman.h>.

Avant Linux 2.4, une tentative d'exécution d'un programme Set-UID ou Set-GID sur un système de fichiers monté avec l'attribut MS_NOSUID échouait avec l'erreur EPERM. Depuis Linux 2.4 les bits Set-UID et Set-GID sont simplement ignorés silencieusement dans ce cas.

À partir du noyau 2.4.19, Linux fournit des espaces de noms montage. Un espace de noms montage est un ensemble de montages de systèmes de fichiers qui sont visibles par un processus. Les espaces de noms montage peuvent être (ils le sont généralement) partagés entre différents processus et les modifications de l'espace de noms (c'est-à-dire les montages et démontages) par un processus sont visibles pour tous les autres processus qui partagent le même espace de noms (la situation des versions antérieures à 2.4.19 de Linux peut être considérée comme l'utilisation d'un unique espace de noms partagé par tous les processus du système).

Un processus enfant créé avec fork(2) partage l'espace de noms montage de son parent ; l'espace de noms montage est préservé au travers d'un execve(2).

Un processus peut obtenir un espace de noms montage privé si : il a été créé en utilisant l'attribut CLONE_NEWNS de clone(2), dans ce cas son nouvel espace de noms est initialisé comme une copie de l'espace de noms du processus qui a appelé clone(2) ; ou il appelle unshare(2) avec l'attribut CLONE_NEWNS, ce qui provoque l'obtention d'une copie privée de l'environnement de l'appelant, qui était auparavant partagé avec d'autres processus, de telle sorte que les montages ou démontages futurs de l'appelant ne seront pas visibles des autres processus (à l'exception des processus enfants que le processus pourrait créer), et vice-versa.

Pour plus de détails sur les espaces de noms montage, voir mount_namespaces(7).

Each mount has a parent mount. The overall parental relationship of all mounts defines the single directory hierarchy seen by the processes within a mount namespace.

The parent of a new mount is defined when the mount is created. In the usual case, the parent of a new mount is the mount of the filesystem containing the directory or file at which the new mount is attached. In the case where a new mount is stacked on top of an existing mount, the parent of the new mount is the previous mount that was stacked at that location.

The parental relationship between mounts can be discovered via the /proc/[pid]/mountinfo file (see below).

The Linux-specific /proc/[pid]/mounts file exposes the list of mounts in the mount namespace of the process with the specified ID. The /proc/[pid]/mountinfo file exposes even more information about mounts, including the propagation type and mount ID information that makes it possible to discover the parental relationship between mounts. See proc(5) and mount_namespaces(7) for details of this file.

mountpoint(1), chroot(2), ioctl_iflags(2), mount_settatr(2), pivot_root(2), umount(2), mount_namespaces(7), path_resolution(7), findmnt(8), lsblk(8), mount(8), umount(8)

Cette page fait partie de la publication 5.13 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

La traduction française de cette page de manuel a été créée par Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Philippe MENGUAL <jpmengual@debian.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

27 août 2021 Linux