Запретить общий доступ к несмонтированным дискам

Запретить общий доступ к несмонтированным дискам

У меня есть файловый сервер, настроенный на общий доступ к внешнему диску через samba и netatalk (AFP). У меня есть запись fstab для автоматического монтирования диска в /mnt/external, который затем автоматически предоставляется в общий доступ различными демонами.

Проблема в том, что диск не монтируется должным образом (например, если я забыл его включить или если я взял его на работу в тот день). В этом случае точка монтирования становится общей без соответствующего подключенного диска, что приводит к записи различных метафайлов в мою точку монтирования, а не к чистому сбою. Это не позволяет диску правильно монтироваться в следующий раз, когда я его подключаю (непустой каталог), и может привести к потере данных, если кто-то использовал общий ресурс в это время.

Есть ли способ сделать так, чтобы общие ресурсы перестали работать в случае, если диск отключен?

решение1

Вы можете задать атрибуты исходной папки монтирования, чтобы сделать ее immutable:

chattr +i /mnt/external

Папка теперь заблокирована, и любые операции с ней запрещены (вы можете разблокировать ее с помощью -i). Однако mountили fstabпо-прежнему работают правильно.


Убедитесь, что диск не смонтирован перед запуском chattr. Если вы получили ошибку "Inappropriate ioctl for device While reading flags", возможно, вы работаете с файловой системой, которая не поддерживает атрибуты папок. Фактически, некоторые дистрибутивы Linux монтируют основной раздел, используя overlayfsфайловую систему вместо ext. Поэтому вам придется вручную смонтировать его в другом месте, чтобы начать chattrработать с папками (то есть mount /dev/mmcblk0p3 /mnt/tempтогда chattr +i /mnt/temp/root/mnt/external).

Связанный контент