Bagaimana cara membuat tautan read-only ke direktori?


18

Salah satu skrip saya secara dinamis membuat symlink seperti:

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

Bagaimana saya membuatnya sehingga akses melalui tautan hanya baca?

Jawaban:


18

Anda dapat membuat bind-mount read-only .

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

Ya, ini harus dilakukan dalam dua langkah di kernel setelah kernel Linux 2.6.25 (lihat tautan di atas untuk alasannya).

Atau, sebagai alternatif, sebagai /etc/fstabcontoh baris ref :

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

Dalam pendekatan mana pun, bind mount hidup di lapisan Virtual Filesystem (VFS), jadi ini tidak spesifik untuk sistem file apa pun, Anda juga tidak benar-benar 'me-mount' apa pun. Jadi, pada dasarnya, ini membuat semacam tautan simbolis untuk Anda, tetapi ini tidak muncul seperti itu.

Dan untuk membalas komentar di bawah tentang kehilangan data ... tidak, instruksi ini tidak menghapus file apa pun. Jika Anda memiliki file yang ada di jalur tujuan, mount ini akan meletakkan ini. Lepaskan saja untuk dapat membuat daftar file Anda di jalur pada sistem file di bawahnya. Bahkan lebih baik; secara umum, hindari pemasangan di atas jalur tujuan yang tidak kosong.


1
Hati-hati. Ikuti langkah-langkah ini dan menghapus seluruh direktori cadangan saya dan membuatnya tidak dapat ditulis oleh daemon cadangan saya.

dapatkah Anda memberikan solusi ini sebagai entri fstab?
Throoze

@Throoze Ini dia;)
gertvdijk

Perintah remount mungkin harus: mount -o bind,remount,ro /path/to/destLihat lwn.net/Articles/637501 dari utas yang sama.
anon

mount -o remount,ro /path/to/destmemberi saya kesalahan berikut: mount: mount point is busy.@gertvdijk
alper

2

untuk memasang binding dibaca hanya dengan satu perintah:

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

untuk melepas

umount /path/to/dest/
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.