Scroll to navigation

MOUNT(2) Linux Programmer's Manual MOUNT(2)

NOME

mount - monta i file system

SINTASSI

#include <sys/mount.h>

int mount(const char *source, const char *target,
          const char *filesystemtype, unsigned long mountflags,
          const void *data);

DESCRIZIONE

mount() collega il file system specificato da source (che è spesso un nome di dispositivo, ma può anche essere un nome di directory o un nome fittizio) alla directory specificata da R target .

Sono necessari privilegi appropriati (Linux: capacità CAP_SYS_ADMIN) per montare i file system.

A partire da Linux 2.4 un singolo file system può essere visibile su punti di mount multipli, e sullo stesso punto di mount possono essere impilati montaggi multipli.

I valori dell'argomento filesystemtype supportati dal kernel sono elencati in /proc/filesystems (come "minix", "ext2", "ext3", "jfs", "xfs", "reiserfs", "msdos", "proc", "nfs", "iso9660" ecc.). Possono essere disponibili altri tipi di file system caricando i moduli appropriati.

L'argomento mountflags può avere il magic number 0xC0ED (MS_MGC_VAL) nei 16 bit più alti (era necessario nelle versioni di kernel precedenti a 2.4, ma non è più necessario ed è ignorato se specificato), e vari flag di montaggio (come definito in <linux/fs.h> per libc4 e libc5 e in <sys/mount.h> per glibc2) nei 16 bit di ordine basso:

Esegue un montaggio bind, rendendo un file o un sottoalbero di directory visibile a un altro punto dentro un file system. I montaggi bind possono attraversare i file system e oltrepassare le gabbie chroot(2). Gli argomenti R filesystemtype e R data sono ignorati. A partire da Linux 2.6.26, è ignorato anche mountflags (i montaggi bind hanno le stesse opzioni di montaggio del punto di mount sottostante). A partire da Linux 2.6.26, il flag MS_RDONLY viene onorato quando si effettua un montaggio bind.
Sincronizza i cambiamenti di directory in questo file system. (Questa proprietà può essere ottenuta per directory individuali o sottoalberi usando chattr(1).)
Permette il blocco obbligatorio sui file in questo file system. (Il blocco obbligatorio deve sempre essere abilitato in base ai file, come descritto in fcntl(2).)
Sposta un sottoalbero. source specifica un punto di mount esistente e target specifica la nuova posizione. Lo spostamento è atomico: il sottoalbero non viene smontato in nessun momento. Gli argomenti R filesystemtype , mountflags , e data sono ignorati.
Non aggiorna l'ora di accesso per (tutti i tipi di) file su questo file system.
Non permette l'accesso a dispositivi (file speciali) in questo file system.
Non aggiorna l'ora di accesso per directory su questo file system. Questo flag fornisce un sottoinsieme di funzioni messe a disposizione da MS_NOATIME; vale a dire che MS_NOATIME implica MS_NODIRATIME.
Non permette l'esecuzione di programmi su questo file system.
Non onora i bit set-user-ID e set-group-ID quando si eseguono programmi da questo file system. set-user-ID e set-group-ID da dischi rimovibili.)
Monta file system in sola lettura.
Quando si accede a un file in questo file system, aggiorna solo l'ora dell'ultimo accesso al file (atime) se il valore attuale di atime è minore o uguale a quello dell'ultima modifica del file (mtime) o all'ora dell'ultimo cambiamento di stato (ctime). Questa opzione è utile per programmi come mutt(1), che hanno bisogno di sapere quando un file è stato letto dall'ultima modifica.
Monta di nuovo un montaggio esistente. Questo permette di cambiare mountflag e dati di un montaggio esistente senza dover smontare e rimontare il file system. source e target devono avere gli stessi valori specificati nella chiamata mount() iniziale; filesystemtype è ignorato.

I seguenti mountflag possono essere cambiati: MS_RDONLY, MS_SYNCHRONOUS, MS_MANDLOCK; prima del kernel 2.6.16 potevano essere cambiati anche i seguenti: MS_NOATIME e MS_NODIRATIME; e, in aggiunta, prima del kernel 2.4.10, potevano essere cambiati anche questi: MS_NOSUID, MS_NODEV, MS_NOEXEC.

Sopprime la visualizzazione di alcuni messaggi di avvertimento (printk()) nelle registrazioni del kernel. Questo flag sostituisce il flag MS_VERBOSE, obsoleto e chiamato nel modo sbagliato (disponibile da Linux 2.4.12), che ha lo stesso significato.
Rende sincrone le scritture su questo file system (come se il flag O_SYNC di open(2) fosse specificato per tutti i file aperti su questo file system).

Da Linux 2.4 in poi, i flag MS_NODEV, MS_NOEXEC, e MS_NOSUID possono essere impostati basandosi sul punto di mount. Dal kernel 2.6.16 in poi, MS_NOATIME e MS_NODIRATIME possono essere impostati basandosi sui punti di mount. Anche il flag MS_RELATIME può essere impostato basandosi sui punti di mount.

L'argomento R data è interpretato da differenti file system. Tipicamente è una stringa di opzioni separate da virgole capita da questo file system. Vedere mount(8) per dettagli delle opzioni disponibili per ciascun tipo di filesystem.

VALORE RESTITUITO

In caso di successo viene restituito zero. In caso di errore viene restituito -1 , e errno viene impostato di conseguenza.

ERRORI

I valori di errore indicati di seguito sono causati da errori indipendenti dal tipo di file system. Ciascun tipo di file system può avere i propri errori speciali e il suo comportamento speciale. Vedere il codice sorgente del kernel per dettagli.

Un componente di un percorso non poteva essere cercato. (Vedere anche path_resolution(2).) Oppure è stato tentato il montaggio di un file system in sola lettura senza dare il flag MS_RDONLY . Oppure il dispositivo a blocchi source si trova su un filesystem montato con l'opzione MS_NODEV
source è già montato. Oppure non può essere rimontato in sola lettura, perché contiene ancora file aperti in scrittura. Oppure non può essere montato su target perché target è ancora occupato (è la directory di lavoro di qualche task, il punto di mount di un altro dispositivo, ha file aperti, ecc.).
Uno degli argomenti puntatori punta fuori dallo spazio di indirizzamento dell'utente.
source ha un superblocco non valido. Oppure è stato tentato un rimontaggio (MS_REMOUNT), ma source non era ancora montato su R target . Oppure è stato tentato uno spostamento (MS_MOVE), ma source non era un punto di mount, o era '/'.
Troppi link incontrati durante la risoluzione di un percorso. Oppure è stato tentato uno spostamento, mentre target è discendente di R source .
(Nel caso non sia necessario un dispositivo a blocchi:) La tabella dei dispositivi fittizi è piena.
Un nome di percorso è più lungo di MAXPATHLEN.
filesystemtype non configurato nel kernel.
Un nome di percorso era vuoto o aveva un componente inesistente.
Il kernel non può allocare una pagina libera in cui copiare nomi di file o dati.
source non è un dispositivo a blocchi (ed era necessario un dispositivo).
R target , o un prefisso di R souce, non è una directory.
Il major number del dispositivo a blocchi source è fuori limite.
Il chiamante non ha i privilegi necessari.

CONFORME A

Questa funzione è specifica di Linux e non deve essere usata in programmi pensati per essere portabili.

NOTE

Il flag originale MS_SYNC fu rinominato MS_SYNCHRONOUS in 1.1.69 quando fu aggiunto un diverso MS_SYNC a <mman.h>.

Prima di Linux 2.4, un tentativo di eseguire un programma set-user-ID o set-group-ID su un file system montato con MS_NOSUID falliva con EPERM. A partire da Linux 2.4 i bit set-user-ID e set-group-ID in questo caso sono ignorati silenziosamente.

Spazi dei nomi in base al processo

A partire dal kernel 2.4.19, Linux fornisce spazi dei nomi di montaggio in base al processo. Uno spazio dei nomi di montaggio è l'insieme di montaggi di file system che un processo può vedere. Gli spazi dei nomi dei punti di mount possono essere (e di solito lo sono) condivisi tra processi multipli, e i cambiamenti provocati da un processo (cioé montaggi e smontaggi) sono visibili a tutti i processi che condividano lo stesso spazio dei nomi. (La situazione prima di Linux pre-2.4.19 prevedeva che un singolo spazio dei nomi venisse condiviso da tutti i processi nel sistema.)

Un processo figlio creato da fork(2) condivide lo spazio dei nomi di montaggio del suo genitore: lo spazio dei nomi di montaggio viene preservato tramite un execve(2).

Un processo può ottenere uno spazio dei nomi di montaggio privato se: è stato creato usando il flag di clone() CLONE_NEWNS, e in questo caso il suo nuovo spazio dei nomi viene inizializzato come copia degli spazi dei nomi del processo che ha chiamato clone(): o se chiama unshare(2) con il flag CLONE_NEWNS, che permette allo spazio dei nomi del chiamante di ottenere una copia privata dello spazio dei nomi che in precedenza condivideva con altri processi, in modo che chiamate a montaggi e smontaggi futuri siano invisibili agli altri processi (ad eccezione di processi figli creati successivamente dal chiamante), e viceversa.

Il file specifico di Linux /proc/PID/self mostra l'elenco di punti di mount negli spazi dei nomi dei processi con l'ID specificato. Vedere proc(5) per i dettagli.

VEDERE ANCHE

umount(2), path_resolution(7), mount(8), umount(8)

COLOPHON

Questa pagina fa parte del rilascio 3.14 del progetto man-pages di Linux. Si può trovare una descrizione del progetto, e informazioni su come riportare bachi, presso http://www.kernel.org/doc/man-pages/. Per la traduzione in italiano si può fare riferimento a http://www.pluto.it/ildp/collaborare/

20 novembre 2008 Linux