Jak utworzyć link tylko do odczytu do katalogu?

18

Jeden z moich skryptów dynamicznie tworzy takie dowiązanie symboliczne:

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

Jak mogę to zrobić, aby dostęp przez link był tylko do odczytu?

Elmor
źródło

Odpowiedzi:

18

Możesz utworzyć montowanie tylko do odczytu w trybie bind .

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

Tak, należy to zrobić w dwóch krokach w jądrach po jądrach Linuksa 2.6.25 (dlaczego link znajduje się powyżej).

Lub, alternatywnie, jako /etc/fstabprzykład linii ref :

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

W obu przypadkach montowanie powiązań występuje w warstwie wirtualnego systemu plików (VFS), więc nie jest to specyficzne dla żadnego systemu plików, ani też niczego nie „montujesz”. Zasadniczo tworzy to dla ciebie coś w rodzaju dowiązania symbolicznego, ale nie pojawia się ono jako takie.

Aby odpowiedzieć na poniższy komentarz dotyczący utraty danych ... nie, te instrukcje nie usuwają żadnych plików. Jeśli masz pliki obecne na ścieżce docelowej, to montowanie będzie się nad tym leżało. Po prostu odmontuj, aby móc wyświetlić listę plików na ścieżce w systemie plików poniżej. Nawet lepiej; Ogólnie rzecz biorąc, unikaj montażu na niepustej ścieżce docelowej.

gertvdijk
źródło
1
Bądź ostrożny. Wykonałem te kroki i usunąłem cały katalog kopii zapasowej i uniemożliwiłem zapisywanie go przez mojego demona kopii zapasowej.
czy możesz podać to rozwiązanie jako wpis fstab?
Throoze
@Throoze There you go;)
gertvdijk
Polecenie remount powinno prawdopodobnie brzmieć: mount -o bind,remount,ro /path/to/destZobacz lwn.net/Articles/637501 z tego samego wątku.
anon
mount -o remount,ro /path/to/destwyświetla mi następujący błąd: mount: mount point is busy.@gertvdijk
alper
2

aby zamontować bind tylko do odczytu za pomocą jednego polecenia:

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

odmontować

umount /path/to/dest/
Shimon Doodkin
źródło