Назад | Перейти на главную страницу

Остановить удаление файла при монтировании NFS

У меня есть файлы, хранящиеся на монтировании NFS, и я хочу предотвратить их удаление. Вариант использования: у меня есть демонстрационная версия веб-приложения, которое использует одни и те же изображения в каждой демонстрации - когда кто-то удаляет запись, он удаляет связанные изображения, файлы и т.д., но я не хочу, чтобы эти изображения удалялись по мере их использования. всеми. Они должны иметь возможность удалять другие изображения и т. Д., Но только не те, которые я выбрал.

Раньше они были на локальном диске, и я использовал:

chattr +i file

что сработало - я переместил все файлы на 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 альтернативный способ остановить удаление файла?

я считать это должно работать.

  1. Сделайте так, чтобы защищаемые файлы принадлежали root: root. например chown root:root
  2. Убедитесь, что root_squash включен на монтировании nfs.
  3. chmod 0644 файлы.
  4. Если вам это удастся, выполните команду chown root: root для каталога и chmod 755 для каталога. Это единственный способ убедиться, что он не может быть удален кем-либо, кроме root.

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

Я знаю, вы сказали, что не можете их включить, но я бы сильно рекомендую посмотреть ACL. Списки контроля доступа превосходно подходят для управления разрешениями в сложных средах.

В /etc/exports использовать ro возможность экспортировать общий ресурс только для чтения.

/path/to/nfs webserver.com(ro)

Если у вас есть выборочные файлы, которые вы хотите защитить как только для чтения, я бы посоветовал не спускаться в кроличью нору изменений ACL и разрешений, а просто монтировать статические активы и экспортировать их как (ro).