Jak sprawdzić zmodyfikowane pliki konfiguracyjne w systemie Debian?

62

Jak znaleźć wszystkie pliki konfiguracyjne zarządzane przez Debian, które zostały zmienione z domyślnych?

Malclocke
źródło
1
Pytanie idzie tutaj. Odpowiedź znajduje się poniżej.
Dennis Williamson,
Przesunąłem odpowiedź, którą podałeś, do twojej odpowiedzi.
Zoredache,

Odpowiedzi:

78

Aby znaleźć wszystkie pliki konfiguracyjne zarządzane przez Debian, które zostały zmienione z domyślnych, możesz użyć takiego polecenia.

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

Edytuj (działa z zlokalizowanymi systemami):

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

Edytuj (działa z pakietami z OK w nazwie pliku):

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
Malclocke
źródło
Działa jak urok na Ubuntu 10.4, głosowałbym tysiące razy :-)
Ludwig Weinzierl
działa świetnie. możesz jednak użyć, md5sum --quietaby uniknąć filtrowania plików OK za pomocą awk(a tym samym problemów z lokalizacją?). Nawiasem mówiąc: nie wiesz, jak dołączyć nieśledzone pliki do / etc? Jak na przykład te w / etc / apache2 / sites-available?
sfussenegger
Byłoby ciekawie wiedzieć, jak debsums -ecnaprawdę działa moja odpowiedź ( ), ponieważ wydaje się, że przynosi znacznie mniej wyników niż to.
naught101
Ponadto, najwyraźniej jedyne pliki conf są sprawdzane pod kątem wersji pakietów, to są te, które pojawiają się debsums -ec: jeśli użyję tej metody do ponownego utworzenia wersji pakietów , to niektóre pliki wymienione za pomocą tej metody nie zostaną zmienione.
naught101
Jako dodatkowe sprawdzenie, które zmiany konfiguracji mogą być w toku lub przestarzałefind /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
sphakka
47

z man debsums:

  debsums -ce
          List changed configuration files.
naught101
źródło
1
To zdecydowanie najprostsza i najlepsza odpowiedź.
mfisch,
1
Tylko debsumy nie są instalowane domyślnie i możesz nie chcieć ich instalować.
Alexis Wilke,
1
@AlexisWilke: ma 218kb i ma minimalne zależności ...
naught101 18.07.16
11

Przepraszam za nekro, ale chociaż odpowiedź @ naught101 była poprawna dla zmodyfikowanych plików, nie pomogła w przypadku dodanych plików. @ Graeme rozwiązanie jest dobre, ale zależy od etckeeper; Nie chcę modyfikować systemu plików.

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

Znajdź pliki w / etc /, które debsumsma nie zgłosić jako ważny. Oznacza to, że nieśledzone pliki lub pliki, które nie są „OK” (skróty nie pasują).

blast_hardcheese
źródło
Należy również uruchomić, debsums --list-missingaby sprawdzić, czy brakuje jednego lub więcej pakietów sum kontrolnych dołączonych plików. Obecnie wyjście powinno być puste.
Mikko Rantalainen
5

Lub debsums -e | grep FAILED, który pokaże również wszystkie brakujące pliki conffiles

(z pakietu debsums)

Wookey
źródło
2

Może to być przesada, ale odkąd ktoś wspomniał o etckeeperze i kiedy badałem, natknąłem się na ten inny klejnot, który może być bardziej przydatny, jeśli próbujesz dowiedzieć się rzeczy „po fakcie”.

http://devstructure.com/blueprint/

Blueprint to proste narzędzie do zarządzania konfiguracją, które dokonuje inżynierii wstecznej serwerów. Sprawdza, co zrobiłeś ręcznie, przechowuje go lokalnie w repozytorium Git, generuje kod, który jest w stanie odtworzyć twoje wysiłki i pomaga wdrożyć te zmiany w środowisku produkcyjnym.

dragon788
źródło
Nie jest jasne z ich strony głównej (wygląda trochę nieaktualne), czy obsługiwany jest Python-3. Czy ktoś próbował?
sphakka
Sądząc po repozytorium GitHub, które było ostatnio aktywne kilka lat temu, nie postawiłbym za dużo pieniędzy na to, że działa w Python3 od razu po wyjęciu z pudełka, ale wydaje się, że jest całkiem dobrze napisany, więc dodanie go w Python3 może nie być duże wsparcie.
dragon788
1

To trochę odbiega od pierwotnego pytania, ponieważ daje również DODANE pliki konfiguracyjne w przeciwieństwie do tylko tych zmodyfikowanych. Chociaż pliki nie zawarte w żadnym pakiecie deb również zostaną przechwycone. Oba zachowania mogą być pożądane.

Zależy to od tego, czy korzystałeś z etckeeper z git vcs idealnie od samego początku, chociaż powinno to również działać, jeśli specjalnie dodasz i zatwierdzisz wcześniej zmienione pliki po pierwszym zatwierdzeniu. Zauważ, że jedną z nich jest to, że Ubuntu konfiguruje etckeeper tak, aby domyślnie korzystał z Bazaar (sponsor kanoniczny Bazaar), a nie domyślny git ustawiony przez programistów etckeeper.

Chodzi o to, aby uzyskać listę wszystkich zatwierdzeń, które nie są dokonywane automatycznie po i apt run. Następnie wyświetl listę plików zmienionych we wszystkich oprócz pierwszego zatwierdzenia:

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"

Łańcuch filtru można również rozszerzyć, aby obejmował inne zatwierdzenia, jeśli są one konsekwentnie nazywane. Może być dobry dla instalacji bezpośrednio z pliku deb lub kodu źródłowego.

Godnym uwagi plikiem, który dla mnie ten pobiera, jest mój xorg.conf- obecnie musisz go dodać do / etc / X11, jeśli go potrzebujesz. Również moje default/grubzmiany są pobierane, wygląda na to, że są one kopiowane z / usr / share przez skrypt poinstalacyjny, a nie są wymienione jako część pakietu. Jeśli dokonano zmiany w takim pliku, metody powiązane z dpkg go nie ujawnią.

Graeme
źródło
1
Dla twojej informacji, git logteraz ma --invert-grepopcję, która pozwala odfiltrować nieciekawe zatwierdzenia bez użycia sed.
Neil Mayhew,