Как отслеживать изменения в / etc /

30

Я хотел бы отслеживать изменения в / etc /

По сути, я хотел бы знать, был ли файл изменен пользователем yum updateили пользователем, и откатить его, если мне не нравится изменение. Я подумал об использовании VCS, таких как снимки git, LVM или btrfs или программа резервного копирования для этого.

Чтобы вы посоветовали?

taffer
источник

Ответы:

32

Похоже, вы хотите etckeeper от Джои Хесс из Debian, который управляет файлами /etcс помощью контроля версий. Он поддерживает git, mercurial, darcs и базар.

git - это VCS, лучше всего поддерживаемая etckeeper, и пользователи VCS, скорее всего, об этом знают. Возможно, ваш дистрибутив решил изменить etckeeper, поэтому его VCS по умолчанию не git. Вы должны использовать etckeeper только с VCS, отличным от git, если вы влюблены в другой VCS.

Фахим Митха
источник
Etckeeper - один из самых ценных инструментов администратора, который я установил на своих компьютерах, и это один из самых первых пакетов, которые я устанавливаю после установки новой системы.
Хловдал
6

Я не могу дать вам окончательную рекомендацию, но я могу поделиться несколькими мыслями по этому вопросу. Учитывая, что / etc обычно довольно маленький, вы можете просто пойти на простое сжатое tar-решение. Если вам вряд ли нужно просматривать историю, это может быть самым простым решением для настройки.

Для меня было бы утомительно управлять логическими томами только для того, чтобы отслеживать / etc, и тем более, что я не думаю, что моментальные снимки LVM были созданы для регулярного создания в качестве средства для резервного копирования относительно небольшого объема данных.

Мне кажется, что btrfs лучше подходит для этого, но он все еще не так стабилен, как, например, ext {2,3,4}, и инструмент fsck также еще не готов. Но это постоянно становится лучше.

Лично я на самом деле использую git для отслеживания / etc, но вы должны иметь в виду, что git не хранит метаинформацию файла, такую ​​как право собственности или разрешение! А также проверьте, что каталог .git имеет право доступа. Есть несколько инструментов, которые помогают с этими проблемами, хотя. Возможно, вы захотите взглянуть на etc-keeper , который был разработан специально для отслеживания / etc, или использовать хотя бы что-то вроде gitperms или metastore для отслеживания метаинформации.

Антье-м
источник
3

Для отслеживания «нежелательных» изменений мы используем HIDS - в нашем случае samhain другие являются tripwireили aide. Все эти системы будут предупреждать вас, когда происходит что-то нежелательное.

A yum updateне должен ничего менять, не оставляя .rpmnew или .rpmold, если файл конфигурации помечен как таковой в соответствующем rpm.

Myselv Я считаю хорошей практикой создание защищенной копии файла, который я собираюсь изменить cp -p origfile origfileYYYY-MM-DD датой накануне.

Если все остальное терпит неудачу - я вызываю резервных копий парней и прошу восстановить из последней известной "хорошей" резервной копии.

Nils
источник
1

Я думаю, что вы можете сделать снимок файлов / каталогов в /etc .

Сначала составьте список файлов / etc / directory:

# ls -lha /etc >> /snapshotofetc

И если вы делаете файл в /etc

# touch testfile

и если вы сделаете снимок того, /etcчто мы делали раньше

# ls -lhs /etc /lastsnapshotofetc

и тогда вы можете сравнить различия между двумя файлами, как это:

# diff /snapshotofetc /lastsnapshotofetc
Я пришел к
источник
1

Всегда есть радость . Вы можете откатить это изменение обратно, если оно вам не нравится.

chiggsy
источник
0

Вы ищете управление конфигурацией или отслеживание / мониторинг изменений файловой системы?

Если бы это было раньше, я бы посмотрел на puppetили chef. CFEngineсуществует в коммерческих целях. puppetэто популярный зверь в наши дни.

Если это более поздняя версия, вам сложно отслеживать изменения файловой системы, однако существуют экземпляры таких программ, как inotifyи аудит файловой системы auditctlили SGI, famно, опять же, это вещь мониторинга и может быть дорогостоящей реализацией (производительность файловой системы может ухудшиться).

Никхил Мулли
источник
etckeeper может быть тихим адептом только для / etc определенных вещей.
Nikhil Mulley
Извините за то, что был таким неточным. Я улучшил вопрос.
Таффер
0

Вы можете проверить, rsnapshotгде хранятся ежечасные снимки любых каталогов, которые вы хотите ... вы можете настроить его на 24 часа, затем ежедневные X, затем еженедельные X и т. Д. Столько, сколько нужно для дискового пространства. Это достаточно умно, чтобы жестко связать, когда файлы не изменились (это используется rsyncза кулисами.

Аарон Д. Мараско
источник
0

Вы могли бы рассмотреть возможность использования git. Вы можете Это эффективно отслеживать изменения и очень прост в использовании для чего-то вроде этого.

git status # Show changed files
git diff # Show file differences (paged automatically)
git commit -a # Commit all changes. 

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

cd /etc
git init
git add *
git commit -a -m "Created repository"

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

Вы можете использовать клонирование для обработки файлов, общих для нескольких серверов.

BillThor
источник
0

У меня есть скрипт, который запускается каждый день и создает резервные копии файлов, которые изменились с момента предыдущего резервного копирования:

#!bin/bash
ext=$(date +"%Y%m%d")_ChangeS
mkdir -p "$1/$ext" && \
  ionice -c3 rsync -ah --numeric-ids --inplace --backup \
                   --backup-dir="$1/$ext" \
                   --include="/etc" / "$1" && \
  rmdir --ignore-fail-on-non-empty "$1/$ext"

Вы передаете путь, по которому будут создаваться резервные копии, и этот каталог будет иметь список, похожий на этот (после нескольких запусков):

20120106_ChangeS  etc
$ls 20120106_ChangeS/etc/
cron.d

Вы можете немного изменить его, чтобы чаще записывать изменения, или использовать inotify, чтобы запускать измененную версию скрипта, когда происходят изменения /etc.

trk7
источник