Linux |
CentOS 4.8 |
|
mount(2) |
mount, umount − Monter / démonter des systèmes de fichiers. |
#include <sys/mount.h> int mount(const char *source, const char * cible , const char * filesystemtype, unsigned long mountflags , const void * data); int umount(const char *cible); |
mount attache le système de fichiers spécifié 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 cible. umount supprime l’attachement du système de fichiers monté sur le répertoire cible. Seul le Super−User peut monter ou démonter des systèmes de fichiers. L’argument filesystemtype prend une des valeurs listées dans /proc/filesystems (par exemple "ext2", "minix", "msdos", "proc", "nfs", "iso9660" etc...). L’argument mountflags doit avoir le nombre magique 0xC0ED dans ses 16 bits de poids forts, et certains attributs de montage (définis dans <linux/fs.h> pour libc4 ou libc5 et dans <sys/mount.h> pour GlibC2) comme bits de poids faibles : #define MS_RDONLY 1 /* lecture seule */ #define MS_NOSUID 2 /* ignorer les bits Set−UID et Set−GID */ #define MS_NODEV 4 /* interdire l’accès aux fichiers spéciaux */ #define MS_NOEXEC 8 /* interdire l’exécution de programmes */ #define MS_SYNCHRONOUS 16 /* synchroniser les écritures */ #define MS_REMOUNT 32 /* modifier attributs d’un système déjà monté */ #define MS_MANDLOCK 64 /* autoriser les verrouillages stricts */ #define MS_NOATIME 1024 /* ne pas mettre à jour les heures d’accès */ #define MS_NODIRATIME 2048 /* ne pas modifier les heures d’accès des rep */ #define MS_BIND 4096 /* attacher le sous-répertoire ailleurs */ #define MS_MOVE 8129 /* déplacer le sous-répertoire atomiquement */ L’argument data est interprété différemment suivant le type de système de fichiers. |
mountetumount renvoient 0 s’ils réussissent, ou −1 s’ils échouent, auquel cas errno contient le code d’erreur. |
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. Voir les sources du noyau pour plus de details... |
EPERM |
L’utilisateur n’est pas le Super−User |
||
ENODEV |
Filesystemtype n’est pas configuré dans le noyau |
ENOTBLK |
Source n’est pas un fichier spécial en mode bloc. |
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 cible car cible 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...) |
|
EINVAL |
Source a un superbloc invalide, ou on tente un remontage alors que source n’était pas encore monté sur cible. Ou un démontage est demandé sur cible qui n’est pas un point de montage. |
ENOTDIR |
Le second argument, ou un préfixe du premier argument n’est pas un répertoire. |
EFAULT |
L’un des arguments pointe en−dehors de l’espace d’adressage accessible. |
|
ENOMEM |
Pas assez de mémoire pour le noyau. |
ENAMETOOLONG |
Un des arguments est plus long que MAXPATHLEN. |
ENOENT |
Un répertoire des arguments n’existe pas ou est un lien symbolique pointant nulle part. |
||
ELOOP |
Trop de liens symboliques rencontrés dans un chemin, ou un déplacement a été tenté dans lequel cible est un descendant de source. |
||
EACCES |
Un élément de chemin d’accès n’est pas consultable, |
ou on tente de monter un système de fichier
en lecture seule sans préciser l’attribut
MS_RDONLY, |
ENXIO |
Le nombre majeur du périphérique source est invalide. |
||
EMFILE |
Table de montage pleine. |
Ces fonctions sont spécifiques à Linux et ne doivent pas être employées dans des programmes conçus pour être portables. |
La fonction umount originale était invoquée umount(device) et renvoyait ENOTBLK si l’argument était autre chose qu’un périphérique en mode bloc. Dans Linux 0.98p4 un appel umount(répertoire) fut ajouté, afin de gérer des périphériques anonymes. Dans Linux 2.3.99-pre7 l’appel umount(device) fut supprimé, en ne gardant que umount(répertoire) (car maintenant les périphériques peuvent être montés en plusieurs endroits, et l’indication du périphérique ne suffit plus). L’attribut original MS_SYNC a été renommé MS_SYNCHRONOUS dans Linux 1.1.69 car un MS_SYNC différent existait 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 fichier monté avec l’attribut MS_NOSUID échouait avec l’erreur EPERM. Depuis Linux 2.4 les bits Set-UID et Set-GID sont juste ignorés silencieusement dans ce cas. |
mount(8), umount(8) |
Christophe Blaess, 1997. |
mount(2) |