Как можно сохранить права собственности на файл в резервной копии (/etc)?

Как можно сохранить права собственности на файл в резервной копии (/etc)?

Я видел ряд источников, предлагающих сделать резервную копию /etc. Например, презентация «Поддержка машин Debian для друзей и семьи».

Для любого серьезного резервного копирования нам также нужен четко определенный процесс восстановления (который мы можем периодически тестировать :-).

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


Пример файлов с конкретными владельцами:

$ ls -l|grep -v "root root"
total 2240
-rw-r-----.  1 root brlapi     33 Nov 15 21:32 brlapi.key
-rw-r-----.  1 root chrony    481 Nov 21 11:03 chrony.keys
drwxr-xr-x.  4 root lp       4096 Apr 18 10:58 cups
-rw-------.  1 tss  tss      7046 Feb  5  2016 tcsd.conf

решение1

Я делаю это так: устанавливаюetckeeper. Он хорошо интегрирован в Debian и производные. Etckeeper заботится о запоминании разрешений (но не меток SELinux). Резервное копирование /etcтогда сводится к хорошо понятной проблеме резервного копирования репозитория с контролем версий (например, git pullиз /etc).

Чтобы восстановить резервную копию:

  1. Выполните установку по умолчанию (ту же установку по умолчанию, что и оригинал).
  2. Установите etckeeperнеобходимую систему контроля версий.
  3. Восстановите резервную копию /etc( git cloneи git checkoutили эквивалент). Как указал sourcejedi, вам необходимо сделать это перед установкой любого пакета, который динамически назначает идентификаторы пользователей или групп.
  4. Восстановите список установленных пакетов и установите их. Etckeeper не отслеживает это; в Debian и производных используйте , apt-cloneсм.Как скопировать установленные пакеты из одной системы Debian в другую? (Debian Wheezy)).
  5. Перезагрузить.

Обратите внимание, что есть несколько вещей, которые могут не работать, если оборудование не совсем то же самое или если файловая система была переформатирована, что обычно происходит при восстановлении резервной копии. Чтобы восстановление прошло более гладко, убедитесь, что вы не используете уникальные идентификаторы оборудования нигде в своей конфигурации (например, MAC-адрес, серийный номер диска) или случайные идентификаторы (например, используйте метки файловой системы, а не UUID файловой системы или раздела).

решение2

Этот ответ представляет собой контрольный список некоторых проблем, которые необходимо протестировать, поскольку я не видел их упоминаний в других местах. Теперь я могу с радостью проигнорировать упоминания о «резервном копировании» /etc, которые также не описывают, как восстановить его. Я не проверял, является ли этот контрольный список полным..

Следующие шаги также игнорируют частые изменения, зависящие от версии и другие изменения, которые я вижу в etckeeper во время обновлений пакетов, как это специально не упомянуто в вопросе. По крайней мере, вероятно, есть более простые системы, где это не проблема, например маршрутизаторы, работающие под управлением OpenWrt.

  1. Предположение: эта резервная копия специально включает /etc.
  2. Предположение: вы также знаете, как будете обрабатывать любые ссылки на файловые системы, например, которые могли быть созданы заново с другим UUID, в /etc/fstab.
  3. Предположение: целевая система не включает в себя никакихдополнительныйпользователей, по сравнению с резервной копией. Например, это новая установка операционной системы, ваш первоначальный пользователь создан с тем же именем (и UID), и никаких дополнительных служб не было добавлено в ОС во время обновления. Это, вероятно, верно в стабильном релизе Debian, но, безусловно, ненадежно для дистрибутива rolling-release.
  4. Предположение: процесс установки полностью детерминирован относительно назначенных UID (порядок установки пакетов),ина это не влияют никакие новые обновления в репозиториях. Я считаю, что обычные менеджеры пакетов являются детерминированными. Опять же, Debian stable, вероятно, надежен, rolling-release — нет, и между ними лежит область неопределенности. Вы также можете организовать запуск точно такой же версии установщика, без доступа к репозиториям обновлений (оба во время восстановленияикогда вы устанавливали исходную систему).
  5. Вы уже должны были установить инструменты восстановления для своей резервной копии :).
  6. Шаги ниже также предполагают традиционные файлы теневых паролей Linux. Системы BSD используют другие имена файлов. Некоторые специализированные системы Linux ввелисущественно другой стиль.
  7. Убедитесь, что вы можете загрузиться в каком-то "режиме спасения", не используя пароль, определенный в /etc, и вам не нужно ничего более сложного для доступа к резервной копии. Мы играем с огнем. Я не знаю, как шифрование диска справится с этим, хотя использование того же пароля, что и для резервной копии, может помочь. Обратите внимание, что шаги ниже не будут работать, если запущены из отдельного "режима спасениясистема".
  8. mv /etc/ /etc.installer # can be removed later
  9. mkdir /etc && chmod 755 /etc
  10. ID_FILES=passwd group shadow
  11. for i in $ID_FILES; do cp /etc.installer/${i} /etc; done
  12. Теперь для каждого файла iв $ID_FILESможно выполнить восстановление /etc/${i}из резервной копии в целевой системе.
  13. Теперь вы можете восстановитьвсефайлы, включая информацию об их владельце.
  14. Теперь вы можетеповторно применить метки SELinuxили эквивалент, если необходимо.

Если резервная копия находится в репозитории etckeeper (и никаких дополнительных файлов), то шаг 12 — скопировать/клонировать ее /etcи запустить etckeeper init. Вероятно, шаги 10-12 можно пропустить.

OpenWrt

Резервное копирование/восстановление конфигурации системы поддерживается на маршрутизаторах OpenWrt с помощью специальной функции в веб-интерфейсе.

В моей системе OpenWrt 15.05.1 я вижу, что единственными пользователями, владеющими файлами в /etc(или где-либо еще), являются rootи nobody. Можно с уверенностью предположить, что новая установка OpenWrt уже включает этих пользователей.

Я не знаю, будет ли этот инструмент корректно обрабатывать настройки OpenWrt, в которых добавлены дополнительные пользователи.

Связанный контент