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

Это расширение GNU sed :

first ~ step

Сопоставлять каждую step -й строку, начиная со строки сначала . Например, sed -n 1 ~ 2p напечатает все строки с нечетными номерами во входном потоке , а адрес 2 ~ 5 будет соответствовать каждому пятому { Строка {1}}, начиная со второй. первый может быть равен нулю; в этом случае sed работает так, как если бы он был равен step . (Это расширение .)

Ваши два примера соответствуют одним и тем же строкам, но первый записывает ( w ) их в файл, а второй печатает ( p ) туда, куда идет стандартный вывод.

В общем, всегда обращайтесь к руководству команды. Руководство редко бывает двусмысленным. Применение команды путем объединения нескольких аспектов ее функциональности иногда может быть трудно объяснить в учебном пособии (а иногда в учебном пособии делается попытка упростить понимание, перефразируя одно и то же выражение разными способами, что может привести к путанице), но руководство является конкретным справочником по каждому биту того, что делает агрегированная команда.

2
19.04.2017, 10:42
2 ответа

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

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

  1. Предположение: эта резервная копия специально включает / etc .
  2. Предположение: вы также знаете, как вы собираетесь обрабатывать любые ссылки на файловые системы, например который мог быть воссоздан с другим UUID в / etc / fstab .
  3. Предположение: целевая система не включает каких-либо дополнительных пользователей по сравнению с резервной копией. Например. это новая установка операционной системы, ваш первоначальный пользователь создается с тем же именем (и UID), и никакие дополнительные службы не были добавлены в ОС во время обновления. Скорее всего, это верно для стабильного выпуска Debian, но определенно ненадежно для скользящего выпуска.
  4. Предположение: процесс установки полностью детерминирован по отношению к. назначенные UID (порядок установки пакетов), и не зависят от каких-либо новых обновлений в репозиториях. Я считаю, что обычные менеджеры пакетов детерминированы. Опять же, стабильная версия Debian, вероятно, надежна, а непрерывный выпуск - нет, и между ними лежит область неопределенности. Вы также можете организовать запуск той же версии установщика без доступа к репозиториям обновлений (как во время восстановления , так и , когда вы устанавливали исходную систему).
  5. У вас уже должны быть установлены инструменты восстановления для вашей резервной копии :).
  6. Приведенные ниже шаги также предполагают использование традиционных файлов теневых паролей Linux. В системах BSD используются разные имена файлов. Некоторые системы Linux специального назначения представили существенно другой стиль .
  7. Убедитесь, что вы можете загрузиться в каком-либо «режиме восстановления» без использования пароля, определенного в / etc , и вам не нужно ничего более сложного для доступа к резервной копии. Мы здесь играем с огнем. Я не знаю, как с этим справится шифрование диска, хотя может помочь использование того же пароля, что и для резервной копии. Обратите внимание, что приведенные ниже шаги не будут работать, если они будут запущены из отдельной «спасательной системы ».
  8. mv / etc / /etc.installer # можно удалить позже
  9. mkdir / etc && chmod 755 / etc
  10. ID_FILES = passwd group shadow
  11. для i в $ ID_FILES; сделать 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 и никто . Можно с уверенностью предположить, что новая установка OpenWrt уже включает этих пользователей.

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

1
27.01.2020, 22:03

Я делаю это, устанавливая 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
27.01.2020, 22:03

Теги

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