Разрешения файловой системы: Пользователь, который может создавать резервные копии всех файлов

Используйте кавычки:

shasum -a "$sha" "$shapath"

Переменные будут раскрыты как отдельные аргументы независимо от пробелов в значениях.

3
06.03.2016, 06:24
3 ответа

TL, DR: запустите резервную копию от имени пользователя root. Нет ничего плохого в авторизации точной команды rsync через sudo, если вы внимательно просматриваете параметры; было бы неправильно разрешить вызывающей стороне указывать параметры.

Если вы хотите, чтобы пользователь резервной копии мог читать файл, см. Разрешить пользователю читать домашние каталоги некоторых других пользователей Идея состоит в том, чтобы создать представление bindfs для файловая система, в которой этот пользователь может все читать.

Но уровень файлов - не лучший уровень для решения этой конкретной проблемы. Проблема с резервными копиями, сделанными с помощью rsync , заключается в том, что они несовместимы: если пользователь изменяет file1 , то file2 во время резервного копирования, но резервное копирование достигает file2 перед file1 , тогда резервная копия будет содержать старую версию file2 и новую версию file1 . Если file2 - это новая версия file1 , а file1 удален, это означает, что этот файл вообще не появится в резервной копии, что явно плохо. .

Решением этой проблемы является создание моментального снимка файловой системы и запуск резервного копирования оттуда.

В зависимости от технологии создания снимков может быть способ гарантировать, что пользователь сможет прочитать снимок. Если нет, смонтируйте снимок и используйте универсальное решение на основе файловой системы. И даже если есть, rsync все равно проблематичен, потому что, если вы запустите его как обычный пользователь, он не сможет выполнить резервное копирование владения.Поэтому, если вы выполняете резервное копирование каталогов нескольких пользователей, вам потребуется для запуска резервного копирования от имени пользователя root.

5
27.01.2020, 21:22

Существует только один пользователь, а именно root, который может читать любой файл в системе. Именно по этой причине любое коммерческое программное обеспечение для резервного копирования требует для работы права root. Есть много различных способов сделать это, но если вы собираетесь использовать rsync, я бы предложил вам создать учетную запись, эквивалентную root, с оболочкой, установленной на что-то вроде /sbin/nologin или эквивалентную, и поручить этому пользователю выполнять команды rsync в сценарии, используя cron. Использование sudoers усложнит ситуацию и откроет целый ряд новых проблем.

-3
27.01.2020, 21:22

Другой (немного сложный ;) ) способ заключается в том, чтобы сделать доступ к связанному разделу только для чтения (если разделы raw, то kpartx -r, если lvm (предпочтительно!), то lvm snapshot, если btrfa/zfs/whatever со встроенной функцией snapshot (тоже предпочтительно)) и дать пользователю резервного копирования права только для чтения. Затем подготовьте крошечный linux в kvm, который автоматически создает резервные копии этого раздела (заданного через виртуальный HDD) в место назначения (заданное, например, p9 aka shared folders, если используется qemu/kvm).

1
27.01.2020, 21:22

Теги

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