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

Сохранить право собственности с помощью rsync, без root

Я хотел бы выполнить инкрементное резервное копирование (для всей файловой системы) с машины. rsync делает это вполне возможно, однако я хотел бы также сохранить право собственности на файл, то есть сделать возможным его восстановление.

Можно ли обойтись без бега rsync как root на целевой машине (хранение резервных копий)?

Некоторые идеи...

Как указано в других ответах, для непосредственного сохранения информации о владельце вам нужен root-доступ к целевой машине.

Однако у вас было как минимум два обходных пути, чтобы избежать корневого доступа при сохранении права собственности:

  1. использовать --fake-super параметр rsync. На странице руководства:

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

Это означает, что право собственности не сохраняется непосредственно в классическом стиле Unix, а информация о владельце хранится внутри специального расширенного атрибута (например, своего рода «тега», прикрепленного к файлу). При восстановлении rsync может использовать этот тег EA / для правильного восстановления исходного владельца файла.

  1. не позволяйте rsync сохранять информацию о владельце, а сохраняйте их, используя getfacl утилита. Например, выдавая getfacl -R MNTPOINT > acls.txt вы эффективно сохраняете информацию о владельце (и ACL) в текстовом файле, который впоследствии можно использовать для восстановления такой информации с помощью setfacl --restore команда.

На вашем месте я бы поместил резервные копии на том в контейнере Docker. Таким образом, вы можете установить для него хорошие ограничения и избежать угроз безопасности, но при этом запустить его как root, чтобы он делал то, что ему нужно.

Вместо того, чтобы копировать все файлы по одному, как это делает rsync, вам следует подумать о помещении файлов в какой-то «контейнер», который позволяет вам упаковать все файлы, транспортировать их и никогда не потерять метаданные.

Вы считали «деготь»? Я знаю, что tar является противоположностью rsync: он не инкрементный, он никуда не передает данные и т. Д.

Однако он действительно хорош для сохранения прав собственности, разрешений, списков контроля доступа, времени модификации и т. Д. Вы можете создать tar-файл, скопировать его на машину, которая даже не понимает способ выполнения файловых разрешений в Unix (например, Windows, TOPS-20, VAX / VMS), затем скопировать его обратно на хост Unix, распаковать его, и вы получаете все разрешения и т. д., которые у него были изначально.

Существует файловая система FUSE, которая монтировать (только для чтения) файлы tar.

Конечно, вы теряете инкрементные копии и другие функции, которые делают rsync таким отличным инструментом. Однако мир Unix использовал tar более 20 лет, прежде чем был изобретен rsync, и он действительно хорошо работает в определенных ситуациях.

Очевидно, что для получения «корневых» файлов из места назначения вам потребуется root-доступ. Однако есть много способов испортить вашу систему.

1) Вы можете разрешить rsync использовать sudo без пароля 2) Вы можете использовать setuid для rsync, чтобы он мог получить доступ к корневым файлам, в то время как оркестратор резервного копирования является обычным пользователем, а не корневым. 3) используйте rssh, чтобы ограничить риски безопасности всего вышеперечисленного