Остановить удаление файла при монтировании NFS
У меня есть файлы, хранящиеся в NFS-монтировании, которые я хочу предотвратить, чтобы удалить. Вариант использования: у меня есть демо-версия веб-приложения, которое использует одни и те же изображения в каждой демонстрации - когда кто-то удаляет запись, он удаляет связанные изображения, файлы и т. Д., Но я не хочу, чтобы эти изображения удалялись по мере их использования всеми. Они должны иметь возможность удалять другие изображения и т. Д., Но только не те, которые я выбираю.
Ранее они были на локальном диске и я использовал:
chattr +i file
который работал удовольствие - я перенес все ifles в NFS, и когда я попробую это, я теперь получаю:
chattr: Inappropriate ioctl for device while reading flags on file
На данный момент у меня есть cron, который запускается каждые 15 минут и копирует эти файлы из альтернативного каталога обратно в правильное место, которое работает, но это не идеально, особенно если учесть, что люди, подписавшиеся на демонстрацию, могут увидеть пропущенные изображения за это время окно, которое выглядит мусором. Я мог бы переписать логику приложения, если бы меня толкали, но я надеялся на что-то на уровне файловой системы, которое могло бы работать вместо этого.
В этом ответе ( https://unix.stackexchange.com/a/90369/86224) предлагалось включить ACL, но я не могу этого сделать и не могу получить команду chmod, чтобы остановить удаление файлов:
-rw-r--r-- 1 owner owner 24751 Dec 23 16:30 file.ext
Есть ли в NFS альтернативный способ остановить удаление файла?
2 ответа
Я думаю, что это должно работать.
- Сделайте так, чтобы защищаемые файлы принадлежали пользователю root:root. например
chown root:root
- Убедитесь, что root_squash включен на монтировании nfs.
- chmod 0644 файлы.
- Если вам это удастся, выполните команду chown root:root для каталога и chmod 755 для каталога. Это единственный способ гарантировать, что он не может быть удален кем-либо, кроме root.
Владелец - и, как правило, любой пользователь с правами на запись - каталога может обычно переопределять разрешения на удаление файлов в каталоге, поэтому, если вам нужно дать разрешения на запись в каталог, все ставки отключены.
Я знаю, что вы сказали, что не можете включить их, но я настоятельно рекомендую вам посмотреть ACL. ACL превосходно подходят для управления разрешениями в сложных средах.
В /etc/exports
использоватьro
возможность экспортировать общий ресурс только для чтения.
/path/to/nfs webserver.com(ro)
Если у вас есть выборочные файлы, которые вы хотите защитить только для чтения, я бы посоветовал не спускаться по кроличьей норе изменений ACL и разрешений, а просто сделать монтирование статических ресурсов и экспортировать их как (ro)
,