Come creare un collegamento di sola lettura a una directory?


18

Uno dei miei script crea dinamicamente un link simbolico in questo modo:

ln -s /home/hosting/projects/images /home/hosting/projects/demo/images

Come posso farlo in modo che l'accesso tramite link sia di sola lettura?

Risposte:


18

È possibile creare un bind-mount di sola lettura .

mount --bind /path/to/source/ /path/to/dest/
mount -o bind,remount,ro /path/to/dest

Sì, questo deve essere fatto in due passaggi nei kernel dopo i kernel Linux 2.6.25 (per il motivo vedere il link sopra).

Oppure, in alternativa, come /etc/fstabesempio di riga ref :

/path/to/source/ /path/to/dest/ none bind,ro

In entrambi gli approcci, un mount bind risiede nel layer Virtual Filesystem (VFS), quindi questo non è specifico per nessun filesystem, né "montate" davvero nulla. Quindi, in sostanza, questo sta creando una sorta di collegamento simbolico per te, ma questo non si presenta come tale.

E per rispondere al commento qui sotto sulla perdita di dati ... no, queste istruzioni non rimuovono alcun file. Nel caso in cui siano presenti file sul percorso di destinazione, questa installazione verrà posizionata su di essa. Basta smontare per poter elencare i file nel percorso sul filesystem sottostante. Anche meglio; in generale, evitare il montaggio in cima a un percorso di destinazione non vuoto.


1
Stai attento. Ho seguito questi passaggi e ha rimosso tutta la mia directory di backup e non è stata resa scrivibile dal mio demone di backup.

puoi per favore fornire questa soluzione come voce fstab?
Throoze,

@Throoze Ecco qua;)
gertvdijk,

Il comando remount dovrebbe probabilmente essere: mount -o bind,remount,ro /path/to/destVedi lwn.net/Articles/637501 dallo stesso thread.
Anon

mount -o remount,ro /path/to/destmi dà il seguente errore: mount: mount point is busy.@gertvdijk
Alper

2

montare bind in sola lettura con un solo comando:

mount --bind -r /path/to/source/ /path/to/dest/

smontare

umount /path/to/dest/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.