Резервное копирование через моментальный снимок / клон ZFS с настроенными разрешениями файловой системы

Моментальные снимки ZFS отлично подходят для скользящего резервного копирования. Сказать,у нас есть tank / home , установленный в / home . Затем простой снимок состояния zfs tank / home @ TIMESTAMP создаст резервную копию, доступную по адресу /home/.zfs/snapshot/TIMESTAMP . Однако возникает проблема, когда пользователь устанавливает слишком слабые права доступа к какому-либо файлу и исправляет эту ошибку только после создания моментального снимка. Файл будет по-прежнему доступен для чтения не тем людям в моментальном снимке, и все, что может сделать пользователь, - это дождаться, пока моментальный снимок не будет уничтожен (что происходит с помощью задания cron как части схемы скользящего резервного копирования).

Простой ] chmod go-rwx /home/.zfs/snapshot/TIMESTAMP/* поможет, но моментальные снимки доступны только для чтения. Я придумал следующее решение:

chmod o-rwx /home/.zfs/snapshot
zfs snapshot tank/home@snap-TIMESTAMP
zfs clone tank/home@snap-TIMESTAMP tank/clone-TIMESTAMP
zfs set mountpoint=/root/tmp tank/clone-TIMESTAMP
chmod go-rwx /root/tmp/*
zfs set readonly=on tank/clone-TIMESTAMP
zfs set mountpoint=/backup/TIMESTAMP tank/clone-TIMESTAMP

Теперь резервная копия может быть доступна только для чтения пользователям по адресу / backup / TIMESTAMP , и у нее есть измененные разрешения.

По крайней мере, один Проблема в том, что разрешения на /home/.zfs/snapshot снова станут доступными для чтения после перезагрузки. Можно ли изменить это поведение? Мы не можем уничтожить снимок, так как от него зависит клон.

Гораздо более простым решением, конечно же, является сохранение текущих разрешений для домашних каталогов, а затем выполнение chmod go-rwx / home / * , сделайте снимок и, наконец, восстановите разрешения. Тем не менее, это приводит к ряду условий гонки.

Есть ли лучшие идеи?

Приложение: Теперь я выбрал один набор данных для каждого пользователя. Итак, у каждого пользователя есть свои снимки в ~ / .zfs / snapshot . Это не стопроцентное решение. Если у пользователя есть 0701 в своем домашнем каталоге, например, чтобы заставить ~ / public_html работать, то злоумышленник все равно может прочитать файл в моментальном снимке, у которого в то время были неправильные разрешения. когда был сделан снимок. Однако, по крайней мере, теперь пользователь может «отключить» в экстренной ситуации, сделав свой домашний каталог 0700 .

Смена владельца и разрешений для каждого ~ / .zfs будет Лучшее решение, но такие изменения не сохраняются после перезагрузки. Соответствующие команды chowns и chmods могут быть запущены при запуске, но это необходимо реализовать осторожно, чтобы не создавать короткий период, в течение которого файлы все еще доступны.

1
задан 29 September 2019 в 10:12
1 ответ

В ZFS моментальные снимки неизменяемы: вы не можете изменять какие-либо свойства файла после того, как моментальный снимок был сделан.

Вы можете попробовать chmod каталог моментальных снимков (или файл. zfs) сам. Или, используя другой подход, вы можете установить snapdir = hidden

1
ответ дан 3 December 2019 в 23:00

Теги

Похожие вопросы