GNU/Linux >> Linux Esercitazione >  >> Linux

Sola lettura bind-mount?

Risposta diretta dall'articolo LWN:

mount --bind /vital_writable_data /untrusted_container/vital_data
mount -o bind,remount,ro /untrusted_container/vital_data

Supportato da Linux 2.6.26.


Secondo questo articolo è possibile. Hai bisogno di un kernel recente.

mount --bind -o ro /vital_data /untrusted_container/vital_data

In Squeeze funzionava solo con:

mount --bind /src /dst

allora

mount -o remount,ro /dst

Ora in Debian Wheezy devi fare:

mount -o remount,ro,bind /dst

per eliminare il messaggio:risorsa occupata.

Modifica:ora in Debian Jessie, mount cerca di essere intelligente e monta le sottodirectory, che se già montate con bind, diventano ricorsive e accadono cose brutte :)

C'è un'opzione speciale che costringe util-linux a essere di nuovo 'stupido'. La soluzione è questa:

mount --bind --make-rprivate /sbin/ $prefix/sbin/
mount -o remount,ro,bind $prefix/sbin/

Successivamente puoi montare --bind $prefix/sbin in un'altra directory.

Dalla pagina man:

Le operazioni del sottoalbero condiviso. A partire da Linux 2.6.15 è possibile contrassegnare un montaggio ei suoi sottomontaggi come condivisi, privati, slave o non vincolabili. Un montaggio condiviso offre la possibilità di creare mirror di tale montaggio in modo tale che i montaggi e gli smontaggi all'interno di uno qualsiasi dei mirror si propaghino all'altro mirror. Un mount slave riceve la propagazione dal suo master, ma non viceversa. Una cavalcatura privata non ha capacità di propagazione. Un montaggio non associabile è un montaggio privato che non può essere clonato tramite un'operazione di collegamento. La semantica dettagliata è documentata nel file Documentation/filesystems/sharedsubtree.txt nell'albero dei sorgenti del kernel. Le operazioni supportate sono:

     mount --make-shared mountpoint
     mount --make-slave mountpoint
     mount --make-private mountpoint
     mount --make-unbindable mountpoint

I seguenti comandi consentono di modificare in modo ricorsivo il tipo di tutti i montaggi sotto un dato punto di montaggio.

     mount --make-rshared mountpoint
     mount --make-rslave mountpoint
     mount --make-rprivate mountpoint
     mount --make-runbindable mountpoint

mount(8) non legge fstab(5) quando viene richiesta un'operazione --make-*. Tutte le informazioni necessarie devono essere specificate sulla riga di comando. Nota che il kernel di Linux non consente di modificare più flag di propagazione con una singola chiamata di sistema mount(2) e i flag non possono essere mescolati con altre opzioni di mount.

A partire da util-linux 2.23 il comando mount consente di utilizzare diversi flag di propagazione insieme e anche insieme ad altre operazioni di montaggio. Questa caratteristica è SPERIMENTALE. I flag di propagazione vengono applicati da ulteriori chiamate di sistema mount(2) quando le precedenti operazioni di montaggio hanno avuto successo. Si noti che questo caso d'uso non è atomico. È possibile specificare i flag di propagazione in fstab(5) come opzioni di montaggio (private, slave, shared, unbindable, rprivate, rslave, rshared, runbindable).


Linux
  1. Verifica della validità di un montaggio NFS

  2. Come verificare se è montata una directory particolare?

  3. Linux – Mostra solo punti di montaggio "interessanti" / Filtra tipi non interessanti?

  4. Accesso in sola lettura a tutti i file in una sottocartella specifica?

  5. Perché il descrittore di file viene aperto e letto solo una volta?

Correzione del file system di sola lettura della VM di Ubuntu?

Monta dispositivo con diritti utente specifici

Elenca solo i supporti bind

Perché mount non rispetta l'opzione di sola lettura per i bind mount?

Mostra solo i punti di montaggio interessanti / filtra i tipi non interessanti

Rendi il file di sola lettura su Linux anche per root