Как создать доступную только для чтения ссылку на каталог?

18

Один из моих сценариев динамически создает символическую ссылку примерно так:

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

Как сделать так, чтобы доступ по ссылке был только для чтения?

Elmor
источник

Ответы:

18

Вы можете создать привязку только для чтения .

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), так что это не относится ни к какой файловой системе, и вы ничего не «монтируете». Так что, по сути, это создает своего рода символическую ссылку для вас, но это не так.

И чтобы ответить на комментарий ниже о потере данных ... нет, эти инструкции не удаляют файлы. В случае, если у вас есть файлы по пути назначения, это монтирование будет лежать поверх этого. Просто размонтируйте, чтобы иметь возможность перечислять ваши файлы по пути в файловой системе внизу. Даже лучше; в общем, избегайте монтирования поверх непустого пути назначения.

gertvdijk
источник
1
Быть осторожен. Следуя этим шагам, он удалил весь каталог резервного копирования и сделал его недоступным для записи моим демоном резервного копирования.
Можете ли вы предоставить это решение в виде записи в fstab?
Throoze
@ Throoze Вот, пожалуйста;)
gertvdijk
Команда remount, вероятно, должна быть следующей: mount -o bind,remount,ro /path/to/destСм. Lwn.net/Articles/637501 из той же темы .
Anon
mount -o remount,ro /path/to/destдает мне следующую ошибку: mount: mount point is busy.@gertvdijk
ALPER
2

монтировать bind только для чтения одной командой:

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

размонтировать

umount /path/to/dest/
Шимон Дудкин
источник