SYNOPSIS
#include <sys/mount.h>
int mount(const char *source, const char *target,
const char *filesystemtype, unsigned long mountflags,
const void *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) au répertoire indiqué par target.Des privilèges appropriés (sous Linux : la capacité CAP_SYS_ADMIN) sont nécessaires pour monter des systèmes de fichiers.
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 filesystemtype prend une des valeurs listées dans /proc/filesystems (par exemple « ext2 », « minix », « ext3 », « jfs », « xfs », « reiserfs », « msdos », « proc », « nfs », « iso9660 »). Des types supplémentaires peuvent être disponibles lorsque les modules appropriés sont chargés.
L'argument mountflags peut avoir le nombre magique 0xC0ED (MS_MGC_VAL) dans ses 16 bits de poids fort (c'était obligatoire dans les noyaux de version antérieure à 2.4, mais ne l'est plus), et certains attributs de montage dans ses 16 bits de poids faible :
- MS_BIND (depuis Linux 2.4)
- Effectuer un montage lié, rendant un fichier ou une arborescence visibles en un autre point du système de fichiers. Les montages liés peuvent traverser les frontières entre systèmes de fichiers et ouvrir une porte dans une prison chroot(2). Les paramètres filesystemtype et data sont ignorés. Jusqu'à Linux 2.6.26, mountflags était également ignoré (le montage lié a les même options de montage que le point de montage sous-jacent).
- 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_MANDLOCK
- Autoriser les verrouillages impératifs sur le système de fichiers. (Le verrouillage impératif devra toutefois être validé fichier par fichier, comme décrit dans fcntl(2).)
- MS_MOVE
- Déplacer une sous-arborescence. source indique un point de montage existant et target indique son nouvel emplacement. Le déplacement est atomique, à aucun moment la sous-arborescence n'est démontée. Les arguments filesystemtype, mountflags, et data sont ignorés.
- 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 la présence de fichiers spéciaux de périphérique 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 programme depuis le système de fichiers.
- MS_NOSUID
- Ne pas tenir compte des bits Set-UID et Set-GID lors de l'exécution de programmes sur le système de fichiers.
- MS_RDONLY
- Monter le système de fichiers en lecture seule.
- 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 originale. De plus, depuis Linux 2.6.30, le temps du dernier accès à un fichier est toujours mis à jour s'il est plus ancien qu'un jour.
- MS_REMOUNT
-
Réinitialiser un montage existant. Cela permet de modifier les attributs
mountflags et data d'un montage existant sans avoir besoin de démonter
et remonter le système de fichiers. target doit avoir la même valeur que
lors de l'appel mount() initial ; source et filesystemtype sont
ignorés.
Les attributs mountflags suivants peuvent être modifiés : MS_RDONLY, MS_SYNCHRONOUS, MS_MANDLOCK ; avant le noyau 2.6.16, MS_NOATIME et MS_NODIRATIME pouvaient également être modifiés. Enfin, avant le noyau 2.4.10, les attributs MS_NOSUID, MS_NODEV et MS_NOEXEC pouvaient être modifiés.
- MS_SILENT (depuis Linux 2.6.17)
- Supprime l'affichage de certain 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 le temps 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).
Depuis Linux 2.4, les attributs MS_NODEV, MS_NOEXEC, et MS_NOSUID sont configurables de manière variable sur chaque point de montage. À partir du noyau 2.6.16, MS_NOATIME et MS_NODIRATIME peuvent aussi être configurés pour chaque point de montage. L'attribut MS_RELATIME peut aussi être configuré pour chaque point de montage.
L'argument data est interprété différemment suivant le type de système de fichiers. Typiquement, c'est une chaîne d'options comprises par le système de fichiers, séparées par des virgules. Consultez mount(8) pour des détails sur les options disponibles pour chaque type de système.
VALEUR RENVOYÉE
S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno en conséquence.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 n'est pas consultable (voir aussi path_resolution(7)), ou on tente de monter un système de fichiers en lecture seule sans préciser l'attribut MS_RDONLY, ou bien le périphérique bloc source est situé sur un système de fichiers monté avec l'attribut MS_NODEV.
- EBUSY
- source est déjà monté, ou ne peut pas être remonté en lecture seule car il y a des fichiers ouverts en écriture, ou ne peut pas être monté sur target car target est occupé (c'est le répertoire de travail d'un processus, le point de montage d'un autre périphérique, des fichiers y sont ouverts, etc.).
- EFAULT
- L'un des arguments pointe en-dehors de l'espace d'adressage accessible.
- EINVAL
- source a un superbloc invalide, ou on tente un remontage (MS_REMOUNT) alors que source n'était pas encore monté sur target. Ou un déplacement (MS_MOVE) est demandé alors que source n'est pas un point de montage ou est « / ».
- ELOOP
- Trop de liens symboliques rencontrés dans un chemin, ou un déplacement a été tenté dans lequel target est un descendant de source.
- EMFILE
- (Dans le cas où un périphérique bloc n'est pas nécessaire :) Table de montage factice 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 invalide.
- EPERM
- L'appelant n'a pas les privilèges appropriés.
VERSIONS
Les définitions de MS_DIRSYNC, MS_MOVE, MS_REC, MS_RELATIME et MS_STRICTATIME ont été ajoutées aux en-têtes de la glibc depuis la version 2.12.CONFORMITÉ
Cette fonction est spécifique à Linux et ne doit pas être employée dans des programmes destinés à être portables.NOTES
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 par processus
À partir du noyau 2.4.19, Linux fournit des espaces de noms de montage par processus. Un espace de noms de montage est un ensemble de montage de systèmes de fichiers qui sont visibles d'un processus. Les espaces de noms de montage peuvent être (ils le sont généralement) partagés entre différents processus et les modifications à 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 à pre-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 fils créé avec fork(2) partage l'espace de noms de montage de son père ; l'espace de noms de montage est préservée au travers d'un execve(2).
Un processus peut obtenir un espace de noms de 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 fils que le processus pourrait créer), et vice-versa.
Le fichier /proc/PID/mounts, spécifique à Linux, expose une liste de points de montage de l'espace de noms de montage du processus avec l'identifiant indiqué ; consultez proc(5) pour des détails.
COLOPHON
Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <[email protected]> ou par un rapport de bogue sur le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».