Frage Wie kann man nach modifizierten Konfigurationsdateien auf einem Debian-System suchen?


Wie finde ich alle von Debian verwalteten Konfigurationsdateien, die vom Standard geändert wurden?


54
2017-12-02 22:26


Ursprung


Die Frage geht hier. Die Antwort geht unter. - Dennis Williamson
Ich habe die Antwort, die du zur Verfügung gestellt hast, in deine Antwort verschoben. - Zoredache


Antworten:


Um alle von Debian verwalteten Konfigurationsdateien zu finden, die vom Standard abweichen, können Sie einen Befehl wie diesen verwenden.

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

Bearbeiten (funktioniert mit lokalisierten Systemen):

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

Bearbeiten (arbeitet mit Paketen mit OK im Dateinamen):

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

70
2017-12-02 22:27



Funktioniert wie ein Zauber auf Ubuntu 10.4, ich würde dich tausendmal auffrischen :-) - Ludwig Weinzierl
funktioniert super. Du könntest benutzen md5sum --quiet obwohl zu vermeiden, OK-Dateien mit zu filtern awk (und damit die Lokalisierungsprobleme?). Übrigens: Sie wissen nicht, wie Sie nicht verfolgte Dateien in / etc einfügen können? Wie zum Beispiel in / etc / apache2 / sites-available? - sfussenegger
Wäre interessant zu wissen, wie meine Antwort (debsums -ec) funktioniert tatsächlich, weil es viel weniger Ergebnisse zu erhalten scheint. - naught101
Außerdem werden anscheinend nur die conf-Dateien auf Paketversionen geprüft, die dann auftauchen debsums -ec: wenn ich benutze diese Methode, um Paketversionen neu zu installieren, dann werden einige der über diese Methode aufgelisteten Dateien nicht geändert. - naught101


von man debsums:

  debsums -ce
          List changed configuration files.

36
2017-07-21 10:50



Dies ist bei weitem die einfachste und beste Antwort. - mfisch
Nur Debsums ist standardmäßig nicht installiert und Sie möchten es möglicherweise nicht installieren. - Alexis Wilke
@AlexisWilke: es ist 218kb und hat minimale Abhängigkeiten ... - naught101


Tut mir leid, Necro, aber während @ naught101 die Antwort richtig war geändert Dateien, es hat nicht geholfen hinzugefügt Dateien. @ Graemes Lösung ist nett, aber hängt von etckeeper ab; Ich möchte das Dateisystem nicht ändern.

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

Finde Dateien in / etc / that debsums tut nicht Bericht als gültig. Dies bedeutet entweder nicht verarbeitete Dateien oder Dateien, die nicht "OK" sind (Hashes stimmen nicht überein).


9
2018-01-11 22:33





Generell setze ich Etckeeper sehr gerne sofort auf dem System auf. Mit etwas wie etckeeper kann ich nicht nur feststellen, wenn die Datei anders ist, sondern ich kann tatsächlich ein diff bekommen, genau wie es anders ist.

Sehen:


8
2017-12-02 22:49





Oder debsums -e | Grep fehlgeschlagen welches auch alle fehlenden conffiles zeigen wird

(aus dem Debsums-Paket)


5
2018-04-08 15:45





Dies weicht ein wenig von der ursprünglichen Frage ab, da es auch ADDED-Konfigurationsdateien im Gegensatz zu nur den modifizierten geben wird. Dateien, die nicht in einem Deb-Paket enthalten sind, werden ebenfalls abgefangen. Beide Verhaltensweisen können durchaus wünschenswert sein.

Es hängt davon ab, ob Sie Etckeeper mit git vcs im Idealfall von Anfang an verwenden, obwohl es auch funktioniert, wenn Sie zuvor geänderte Dateien hinzufügen und festschreiben nach dem das erste Festschreiben. Beachten Sie, dass Ubuntu hier Etckeeper so konfiguriert, dass Bazaar standardmäßig verwendet wird (Canonical sponsor Bazaar) und nicht die von den Etckeeper-Entwicklern eingestellte git-Standardeinstellung.

Die Idee besteht darin, eine Liste aller Commits zu erhalten, die nicht automatisch nach dem Ausführen von apt erstellt werden. Listen Sie dann die Dateien auf, die bei allen außer dem allerersten Commit geändert wurden:

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"

Die Filterzeichenfolge könnte auch erweitert werden, um andere Commits zu umfassen, wenn sie konsistent benannt werden. Könnte gut für die Installation direkt aus einer Deb-Datei oder aus dem Quellcode sein.

Eine bemerkenswerte Datei, die das für mich aufnimmt, ist meine xorg.conf - Sie müssen dies derzeit zu / etc / X11 hinzufügen, wenn Sie es benötigen. Auch mein default/grub Änderungen werden aufgenommen, es scheint, dass dies von / usr / share durch ein Post-Installationsskript kopiert wird, anstatt als Teil eines Pakets aufgelistet zu werden. Wenn eine Änderung an einer Datei wie dieser vorgenommen wurde, wird sie von dpkg-verwandten Methoden nicht angezeigt.


1
2017-09-26 13:11



Zu Ihrer Information, git log hat jetzt eine an --invert-grep Option, mit der uninteressante Commits ohne Verwendung von gefiltert werden können sed. - Neil Mayhew


Das könnte zu viel werden, aber da jemand etckeeper erwähnt hat und während ich untersucht habe, bin ich auf dieses andere Juwel gestoßen, das nützlicher sein könnte, wenn Sie versuchen, Dinge "nach der Tat" herauszufinden.

http://devstructure.com/blueprint/

Blueprint ist ein einfaches Konfigurationsmanagement-Tool, das Server rückentwickelt. Es ermittelt, was Sie manuell getan haben, speichert es lokal in einem Git-Repository, generiert Code, mit dem Sie Ihre Bemühungen neu erstellen können, und unterstützt Sie bei der Implementierung dieser Änderungen in der Produktion.


0
2018-06-28 15:37