У меня есть файлы, хранящиеся на монтировании 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 альтернативный способ остановить удаление файла?
я считать это должно работать.
chown root:root
Владелец (и обычно любой с правами записи) каталога обычно может переопределить разрешения на удаление файлов в каталоге, поэтому, если вам нужно предоставить разрешения на запись в каталог, все ставки отключены.
Я знаю, вы сказали, что не можете их включить, но я бы сильно рекомендую посмотреть ACL. Списки контроля доступа превосходно подходят для управления разрешениями в сложных средах.
В /etc/exports
использовать ro
возможность экспортировать общий ресурс только для чтения.
/path/to/nfs webserver.com(ro)
Если у вас есть выборочные файлы, которые вы хотите защитить как только для чтения, я бы посоветовал не спускаться в кроличью нору изменений ACL и разрешений, а просто монтировать статические активы и экспортировать их как (ro)
.