Ответы:
Вы можете создать привязку только для чтения .
mount --bind /path/to/source/ /path/to/dest/
mount -o bind,remount,ro /path/to/dest
Да, это должно быть сделано в два этапа в ядрах после ядра Linux 2.6.25 (см. Ссылку выше).
Или, в качестве альтернативы, в качестве /etc/fstab
примера строки ref :
/path/to/source/ /path/to/dest/ none bind,ro
В любом из подходов монтирование связывания происходит на уровне виртуальной файловой системы (VFS), так что это не относится ни к какой файловой системе, и вы ничего не «монтируете». Так что, по сути, это создает своего рода символическую ссылку для вас, но это не так.
И чтобы ответить на комментарий ниже о потере данных ... нет, эти инструкции не удаляют файлы. В случае, если у вас есть файлы по пути назначения, это монтирование будет лежать поверх этого. Просто размонтируйте, чтобы иметь возможность перечислять ваши файлы по пути в файловой системе внизу. Даже лучше; в общем, избегайте монтирования поверх непустого пути назначения.
mount -o bind,remount,ro /path/to/dest
См. Lwn.net/Articles/637501 из той же темы .
mount -o remount,ro /path/to/dest
дает мне следующую ошибку: mount: mount point is busy.
@gertvdijk
монтировать bind только для чтения одной командой:
mount --bind -r /path/to/source/ /path/to/dest/
размонтировать
umount /path/to/dest/