Як перевірити змінені конфігураційні файли в системі Debian?


Відповіді:


78

Щоб знайти всі керовані файли конфігурації Debian, які були змінені за замовчуванням, ви можете скористатися такою командою.

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print $2,$1}' | md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}'

Редагувати (працює з локалізованими системами):

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print $2,$1}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}' | sort | less

Редагувати (працює з пакетами з ОК у назві файлу):

dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print $2,$1}' | LANG=C md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK$/{print $1}' | sort | less

Працює як шарм на Ubuntu 10.4, я б схвалив вас тисячу разів :-)
Людвіг Вайнцирль

працює чудово. Ви можете використовувати, md5sum --quietхоча, щоб уникнути фільтрації файлів ОК за допомогою awk(і, таким чином, проблем з локалізацією?). До речі: ви не знаєте, як включити непотрібні файли в / etc? Як, наприклад, в / etc / apache2 / доступні сайти?
sfussenegger

Було б цікаво дізнатися, як debsums -ecреально працює моя відповідь ( ), оскільки, здається, вона отримує набагато менше результатів, ніж ця.
naught101

Крім того, мабуть, єдині конфіденційні файли перевіряються на версії пакунків, тоді вони з'являються debsums -ec: якщо я використовую цей метод для повторної інсталяції версій пакета , то деякі файли, перелічені за допомогою цього методу, не змінюються.
naught101

В якості додаткової перевірки, щоб побачити, які зміни конфігурації можуть бути очікуваними або застарілимиfind /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
sphakka

47

від man debsums:

  debsums -ce
          List changed configuration files.

1
Це, безумовно, найпростіша і найкраща відповідь.
mfisch

1
Тільки debsums не встановлено за замовчуванням, і ви, можливо, не захочете його встановлювати.
Алексіс Вілке

1
@AlexisWilke: це 218kb і має мінімальні залежності ...
naught101

11

Вибачте за некроз, але хоча відповідь @ naught101 для модифікованих файлів була правильною , для доданих файлів це не допомогло . @ Рішення Graeme приємне, але залежить від etckeeper; Я не хочу змінювати файлову систему.

find /etc -type f | grep -vFf <(debsums -e -r /etc | sed 's/[[:space:]]*OK$//')

Пошук файлів в / і т.д. / , що debsumsробить НЕ повідомляти дійсним. Це означає, що або відслідковуються файли, або файли, які не є "ОК" (хеші не відповідають).


Також слід запустити, debsums --list-missingщоб перевірити, чи немає в одному або декількох пакетах контрольних сум включених файлів. На сьогодні вихід має бути порожнім.
Мікко Ранталайнен

8

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

Побачити:


5

Або скидання -е | grep FAILED, який також покаже всі відсутні конфілі

(з пакету debsums)


2

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

http://devstructure.com/blueprint/

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


Не зрозуміло з їх домашньої сторінки (виглядає трохи застарілою), якщо підтримується Python-3. Хтось намагався?
сфака

Судячи з репортажу GitHub, який діяв кілька років тому, я не ставлю на це занадто багато грошей, працюючи в Python3 поза коробкою, але, здається, це дуже добре написано, тому, можливо, не доведеться докласти великих зусиль у Python3 підтримка.
dragon788

1

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

Це залежить від того, що ви використовували etckeeper з git vcs в ідеалі з початку роботи, хоча це також має працювати, якщо ви спеціально додаєте та виконувати раніше змінені файли після першого введення. Зауважте, що тут є те, що Ubuntu налаштовує etckeeper для використання Bazaar за замовчуванням (Canonical спонсор Bazaar), а не за замовчуванням git, встановленого розробниками etckeeper.

Ідея полягає у тому, щоб отримати список усіх комітетів, які не здійснюються автоматично після та підходящого запуску. Потім перелічіть файли, змінені в усіх, крім першої комісії:

filter_sed="/committing changes in \/etc after apt run\$/d"

etckeeper vcs log --oneline |
  sed "$filter_sed; \$d; s/ .*//" |
  xargs etckeeper vcs show --name-only --format=format: |
  sort |
  uniq |
  sed "/^\$/d"

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

Помітний файл, який вибираєте для мене, це мій xorg.conf- у цей момент ви повинні додати це до / etc / X11 самостійно, якщо вам це потрібно. Крім того, мої default/grubзміни були підібрані, здається, що це скопійовано з / usr / share сценарієм після встановлення, а не вказано як частину пакету. Якщо в такому файлі було внесено зміни, методи, пов'язані з dpkg, не розкриють його.


1
FYI, git logтепер є --invert-grepопція, яка дозволяє відфільтрувати нецікаві комісії без використання sed.
Ніл Мейхев
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.