Comment vérifier les fichiers de configuration modifiés sur un système Debian?

62

Comment trouver tous les fichiers de configuration gérés par Debian qui ont été modifiés par défaut?

malclocke
la source
1
La question est ici. La réponse va en dessous.
Dennis Williamson
J'ai déplacé la réponse que vous avez fournie dans votre réponse.
Zoredache

Réponses:

78

Pour trouver tous les fichiers de configuration gérés par Debian qui ont été modifiés par défaut, vous pouvez utiliser une commande comme celle-ci.

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

Edit (fonctionne avec les systèmes localisés):

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

Edit (fonctionne avec les paquets avec OK dans le nom du fichier):

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
la source
Fonctionne comme un charme sur Ubuntu 10.4, je vous inviterais mille fois :-)
Ludwig Weinzierl
fonctionne très bien. vous pouvez toutefois utiliser md5sum --quietpour éviter de filtrer les fichiers OK avec awk(et donc les problèmes de localisation?). Au fait: vous ne savez pas comment inclure des fichiers non suivis dans / etc? Comme ceux de / etc / apache2 / sites-available par exemple?
Sfussenegger
Il serait intéressant de savoir comment ma réponse ( debsums -ec) fonctionne réellement, car elle semble obtenir beaucoup moins de résultats que cela.
naught101
De plus, apparemment, les seuls fichiers conf vérifiés pour les versions de paquet sont ceux qui apparaissent debsums -ec: si j'utilise cette méthode pour rétablir les versions de paquet , certains des fichiers listés via cette méthode ne sont pas modifiés.
naught101
Comme vérification supplémentaire pour voir quelles modifications de configuration pourraient être en attente ou obsolètesfind /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
sphakka
47

de man debsums:

  debsums -ce
          List changed configuration files.
rien101
la source
1
C'est de loin la réponse la plus simple et la meilleure.
Mfisch
1
Seul debsums n'est pas installé par défaut et vous ne souhaitez peut-être pas l'installer.
Alexis Wilke
1
@AlexisWilke: 218kb et ses dépendances sont minimes ...
naught101
11

Désolé pour necro, mais si la réponse de @ naught101 était correcte pour les fichiers modifiés , cela n'aidait en rien l' ajout de fichiers. La solution de @ Graeme est bien, mais dépend de etckeeper; Je ne veux pas modifier le système de fichiers.

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

Recherchez les fichiers dans / etc / qui debsumsne signalent pas la validité. Cela signifie que les fichiers non suivis ou les fichiers qui ne sont pas "OK" (les hachages ne correspondent pas).

blast_hardcheese
la source
Il faut également exécuter debsums --list-missingpour vérifier si un ou plusieurs packages manquent des sommes de contrôle des fichiers inclus. De nos jours, la sortie doit être vide.
Mikko Rantalainen le
8

J'aime généralement installer etckeeper sur le système à peu près immédiatement. Avec quelque chose comme etckeeper, je peux trouver non seulement lorsque le fichier est différent, mais je peux en fait obtenir un diff de comment il est différent.

Voir:

Zoredache
la source
6

Ou debsums -e | grep FAILED qui affichera également tous les conffiles manquants

(du paquet debsums)

Wookey
la source
2

C'est peut-être exagéré, mais puisque quelqu'un a mentionné etckeeper et au cours de mon enquête, je suis tombé sur cet autre joyau qui pourrait être plus utile si vous essayez de comprendre ce qui se passe "après coup".

http://devstructure.com/blueprint/

Blueprint est un simple outil de gestion de la configuration permettant de procéder à l’ingénierie inverse des serveurs. Il comprend ce que vous avez fait manuellement, le stocke localement dans un référentiel Git, génère un code capable de recréer vos efforts et vous aide à déployer ces modifications en production.

dragon788
la source
Pas clair sur leur page d'accueil (l'air un peu obsolète) si Python-3 est pris en charge. Est-ce que quelqu'un a essayé?
sphakka
À en juger par le dernier rapport de GitHub ayant été actif il y a plusieurs années, je ne parierais pas trop d'argent sur le travail en Python3, mais cela semble plutôt bien écrit. soutien.
dragon788
1

Ceci s'écarte un peu de la question initiale en ce sens qu'il donnera également des fichiers de configuration ADDED, par opposition à ceux modifiés. Bien que les fichiers qui ne sont inclus dans aucun paquet deb soient également interceptés. Les deux comportements peuvent être souhaitables.

Cela dépend d'avoir utilisé etckeeper avec git vcs idéalement dès le départ, même si cela devrait également fonctionner si vous ajoutez et validez des fichiers précédemment modifiés après la première validation. Notez que Ubuntu a configuré que etckeeper utiliserait Bazaar par défaut (sponsor Canonical Bazaar), plutôt que le paramètre par défaut git défini par les développeurs d’etckeeper.

L'idée est d'obtenir une liste de tous les commits qui ne sont pas faits automatiquement après l'exécution d'apt. Puis listez les fichiers modifiés dans tous les dossiers sauf le premier commit:

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"

La chaîne de filtre peut également être étendue pour englober d'autres commits s'ils sont nommés de manière cohérente. Peut-être bon pour les installations directement à partir d'un fichier deb ou du code source.

Un fichier remarquable que cela prend pour moi est le suivant xorg.conf: vous devez actuellement ajouter cela à / etc / X11 vous-même si vous en avez besoin. De plus, mes default/grubmodifications sont récupérées. Il semble que cela soit copié à partir de / usr / share par un script post-installation plutôt que d'être répertorié dans le cadre d'un paquet. Si un fichier comme celui-ci a été modifié, les méthodes associées à dpkg ne le révéleront pas.

Graeme
la source
1
Pour votre information, a git logmaintenant une --invert-grepoption qui permet de filtrer les commits sans intérêt sans utiliser de sed.
Neil Mayhew