Як слідкувати за змінами в / etc /


30

Я хотів би відслідковувати зміни в / etc /

В основному я хотів би дізнатися, чи змінив файл користувач yum updateабо користувач і повернути його назад, якщо мені не подобається черга. Я думав використовувати для цього VCS, наприклад, git, LVM або btrfs, або резервну програму.

Що б ти порадив?


Відповіді:


32

Це здається, що ви хочете і т.д. з Joey Hess з Debian, який управляє файлами під /etcуправлінням версій. Він підтримує git, mercurial, darcs та базар.

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


Etckeeper - це легко один з найцінніших інструментів адміністрування, який я встановив на своїх машинах, і це один із перших пакетів, які я встановлюю після налаштування нової системи.
hlovdal

6

Я не можу дати тобі остаточну рекомендацію, але можу поділитися кількома думками з цього приводу. Зважаючи на те, що / і т.д. зазвичай досить малий, ви можете просто скористатися простим рішенням зі стисненим дьогтем. Якщо вам навряд чи потрібно пройти історію, це може бути найпростішим рішенням.

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

btrfs мені здається набагато кращим для цього, але він все ще не такий стабільний, як, наприклад, ext {2,3,4}, і інструмент fsck також ще не зроблений. Але воно постійно стає кращим.

Особисто я використовую git для відстеження / тощо, але ви повинні мати на увазі, що git не зберігає мейнформацію файлів, як-от власність чи дозвіл! А також перевірте, чи має .git каталог потрібний дозвіл. Однак є кілька інструментів, які допомагають вирішити ці проблеми. Ви можете поглянути на etc.-зберігача , який був розроблений саме для відстеження / тощо, або використати принаймні використання чогось на кшталт гітперми чи метасторії для відстеження метейнформації .


3

Для відстеження "небажаних" змін ми використовуємо HIDS - у нашому випадку samhainінші є tripwireабо aide. Усі ці системи попереджають вас, коли трапилось щось небажане.

A yum updateне повинен нічого змінювати, не залишаючи .rpmnew або .rpmold, якщо config-файл позначений як такий у відповідному rpm.

Мисельв. Я вважав гарною практикою робити копію захищеного файлу, який я збираюсь змінити, з cp -p origfile origfileYYYY-MM-DDдатою напередодні.

Якщо все інше не вдалося - я зателефонував хлопцям із резервних копій і попрошу відновити останній відомий "хороший" резервний копій.


1

Я думаю, ви можете зробити знімок файлів / каталогів у /etc.

Спочатку складіть список файлів / тощо / каталогу:

# ls -lha /etc >> /snapshotofetc

І якщо ви створюєте файл у /etc

# touch testfile

і якщо ви знову зробите знімок /etcподібного до того, що ми робили раніше

# ls -lhs /etc /lastsnapshotofetc

і тоді ви можете порівняти відмінності між двома такими файлами:

# diff /snapshotofetc /lastsnapshotofetc


0

Ви шукаєте управління конфігурацією або відстеження / моніторинг змін файлової системи?

Якщо це раніше, я би подивився на puppetабо chef. CFEngineіснує в комерційних цілях. puppetє популярним звіром у ці дні.

Якщо це пізніше, вам важко контролювати зміни файлової системи, проте є такі програми, як inotifyаудит файлової системи auditctlабо SGI, famале знову-таки, це моніторинг, і це може бути дорогою реалізацією (продуктивність файлової системи може погіршитися).


etckeeper може бути тихо сприйнятливим лише до / тощо.
Nikhil Mulley

Вибачте за те, що це недбало. Я вдосконалив питання.
taffer

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"

Такий підхід найкраще працює на одному сервері, але може бути багатошаровим за допомогою інших інструментів, які змінюють сховище. Це може бути корисно на ваших веб-сайтах канарок, щоб переконатися, що очікуються зміни.

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


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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.