NOM

mount - Monter un système de fichiers

BIBLIOTHÈQUE

Bibliothèque C standard ( libc, -lc)

SYNOPSIS

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

DESCRIPTION

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.

Attributs de montage supplémentaires

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.
MS_DIRSYNC (depuis Linux 2.5.19)
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).)
MS_LAZYTIME (depuis Linux 4.0)
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 :
l'inœud doit être mis à jour pour certains changements non liés aux horodatages du fichier ;
l'application utilise fsync(2), syncfs(2) ou sync(2) ;
un inœud non effacé est évincé de la mémoire ;
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).
MS_MANDLOCK
Permit mandatory locking on files in this filesystem. (Mandatory locking must still be enabled on a per-file basis, as described in fcntl(2).) Since Linux 4.5, this mount option requires the CAP_SYS_ADMIN capability and a kernel configured with the CONFIG_MANDATORY_FILE_LOCKING option. Mandatory locking has been fully deprecated in Linux 5.15, so this flag should be considered deprecated.
MS_NOATIME
Ne pas mettre à jour les dates d'accès pour (tous) les fichiers du système de fichiers.
MS_NODEV
Ne pas autoriser l’accès aux périphériques (fichiers spéciaux) sur le système de fichiers.
MS_NODIRATIME
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.
MS_NOEXEC
Ne pas permettre l'exécution de programmes depuis le système de fichiers.
MS_NOSUID
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.
MS_RDONLY
Monter le système de fichiers en lecture seule.
MS_REC (depuis Linux 2.4.11)
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.
MS_RELATIME (depuis Linux 2.6.20)
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.
MS_SILENT (depuis Linux 2.6.17)
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.
MS_STRICTATIME (depuis Linux 2.6.30)
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.
MS_SYNCHRONOUS
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).
MS_NOSYMFOLLOW (depuis Linux 5.10)
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.

Remontage d'un montage existant

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.

Créer un montage miroir

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.

Modifier le type de propagation d'un montage existant

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 :
MS_SHARED
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.
MS_PRIVATE
Make this mount private. Mount and unmount events do not propagate into or out of this mount.
MS_SLAVE
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.
MS_UNBINDABLE
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).

Déplacer un montage

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.

Creating a new mount

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.

VALEUR RENVOYÉE

En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et errno est définie pour préciser l'erreur.

ERREURS

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.
EACCES
Un élément du chemin d'accès ne permet pas le parcours (consultez aussi path_resolution(7)).
EACCES
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.
EACCES
Le périphérique bloc source se trouve sur un système de fichiers monté avec l'option MS_NODEV.
EBUSY
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.
EBUSY
source ne peut pas être remonté en lecture seule car il a encore des fichiers ouverts en écriture.
EFAULT
L'un des arguments pointe en dehors de l'espace d'adressage accessible.
EINVAL
source avait un superbloc non valable.
EINVAL
Tentative d'une opération de remontage (MS_REMOUNT) mais source n'était pas déjà monté sur target.
EINVAL
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.
EINVAL
Tentative d'une opération de déplacement (MS_MOVE), mais le montage parent du montage source a un type de propagation MS_SHARED.
EINVAL
A move operation (MS_MOVE) was attempted, but source was not a mount, or was '/'.
EINVAL
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é.
EINVAL
mountflags comprend plus d'un MS_SHARED, MS_PRIVATE, MS_SLAVE ou MS_UNBINDABLE.
EINVAL
mountflags comprend un MS_SHARED, MS_PRIVATE, MS_SLAVE ou MS_UNBINDABLE ainsi qu'un autre attribut que MS_REC ou MS_SILENT.
EINVAL
Tentative de monter en miroir un montage impossible à monter ainsi.
EINVAL
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.
ELOOP
Trop de liens rencontrés dans la résolution du chemin d'accès.
ELOOP
Tentative d'une opération de déplacement ou target est un descendant de source.
EMFILE
(Dans le cas où un périphérique bloc n'est pas nécessaire :) Table de périphériques factices pleine.
ENAMETOOLONG
Un des arguments est plus long que MAXPATHLEN.
ENODEV
filesystemtype n'est pas configuré dans le noyau.
ENOENT
Un des chemins est vide ou a un composant inexistant.
ENOMEM
Le noyau n'a pas pu allouer suffisamment de mémoire.
ENOTBLK
source n'est pas un périphérique bloc (et un périphérique était nécessaire).
ENOTDIR
target ou un préfixe de source n'est pas un répertoire.
ENXIO
Le nombre majeur du périphérique bloc source est non autorisé.
EPERM
L'appelant n'a pas les privilèges appropriés.
EPERM
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).
EROFS
Tentative de montage d'un système de fichiers en lecture seule sans donner l'attribut MS_RDONLY. Voir EACCES ci-dessus.

VERSIONS

The definitions of MS_DIRSYNC, MS_MOVE, MS_PRIVATE, MS_REC, MS_RELATIME, MS_SHARED, MS_SLAVE, MS_STRICTATIME, and MS_UNBINDABLE were added to glibc headers in glibc 2.12.

STANDARDS

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

NOTES

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.
The mountflags argument may have the magic number 0xC0ED (MS_MGC_VAL) in the top 16 bits. (All of the other flags discussed in DESCRIPTION occupy the low order 16 bits of mountflags.) Specifying MS_MGC_VAL was required before Linux 2.4, but since Linux 2.4 is no longer required and is ignored if specified.
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.

Espaces de noms montage

Starting with Linux 2.4.19, Linux provides mount namespaces. A mount namespace is the set of filesystem mounts that are visible to a process. Mount namespaces can be (and usually are) shared between multiple processes, and changes to the namespace (i.e., mounts and unmounts) by one process are visible to all other processes sharing the same namespace. (The pre-2.4.19 Linux situation can be considered as one in which a single namespace was shared by every process on the system.)
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).

Parental relationship between mounts

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).

/proc/[pid]/mounts et /proc/[pid]/mountinfo

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.

VOIR AUSSI

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

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <[email protected]>, Thierry Vignaud <[email protected]>, François Micaux, Alain Portal <[email protected]>, Jean-Philippe Guérard <[email protected]>, Jean-Luc Coulon (f5ibh) <[email protected]>, Julien Cristau <[email protected]>, Thomas Huriaux <[email protected]>, Nicolas François <[email protected]>, Florentin Duneau <[email protected]>, Simon Paillard <[email protected]>, Denis Barbier <[email protected]>, David Prévot <[email protected]> et Jean-Philippe MENGUAL <[email protected]>
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 à [email protected]