Come verificare la presenza di file di configurazione modificati su un sistema Debian?


Risposte:


78

Per trovare tutti i file di configurazione gestiti di Debian che sono stati modificati rispetto ai valori predefiniti, puoi usare un comando come questo.

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

Modifica (funziona con sistemi localizzati):

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

Modifica (funziona con i pacchetti con OK nel nome file):

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

Funziona come per incanto su Ubuntu 10.4, ti voterei mille volte :-)
Ludwig Weinzierl,

funziona alla grande. potresti usare md5sum --quietperò per evitare di filtrare i file OK con awk(e quindi i problemi di localizzazione?). A proposito: non sai come includere file non tracciati in / etc? Come quelli in / etc / apache2 / siti-disponibili per esempio?
sfussenegger,

Sarebbe interessante sapere come funziona la mia risposta ( debsums -ec), perché sembra ottenere molti meno risultati di così.
naught101

Inoltre, a quanto pare gli unici file di configurazione controllati per le versioni dei pacchetti sono quelli che vengono visualizzati debsums -ec: se uso questo metodo per reinstallare le versioni dei pacchetti , alcuni dei file elencati tramite questo metodo non vengono modificati.
naught101

Come ulteriore controllo per vedere quali modifiche alla configurazione potrebbero essere in sospeso o obsoletefind /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
sphakka,

47

da man debsums:

  debsums -ce
          List changed configuration files.

1
Questa è di gran lunga la risposta più semplice e migliore.
Mfisch,

1
Solo debsums non è installato di default e potresti non volerlo installare.
Alexis Wilke,

1
@AlexisWilke: è 218kb e ha dipendenze minime ...
naught101

11

Mi dispiace per necro, ma sebbene la risposta di @ naught101 fosse corretta per i file modificati , non ha aiutato i file aggiunti . La soluzione di @ Graeme è buona, ma dipende da etckeeper; Non voglio modificare il filesystem.

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

Trovare i file in / etc / che debsumsnon non riportano come valido. Ciò significa file non tracciati o file che non sono "OK" (gli hash non corrispondono).


Si dovrebbe anche eseguire debsums --list-missingper verificare se uno o più pacchetti mancano i checksum dei file inclusi. Oggi l'output dovrebbe essere vuoto.
Mikko Rantalainen,


6

O debsums -e | grep FAILED che mostrerà anche tutti i conffile mancanti

(dal pacchetto debsums)


2

Questo potrebbe essere eccessivo, ma dal momento che qualcuno ha menzionato etckeeper e mentre stavo indagando, mi sono imbattuto in quest'altra gemma che potrebbe essere più utile se stai cercando di capire le cose "dopo il fatto".

http://devstructure.com/blueprint/

Blueprint è un semplice strumento di gestione della configurazione che esegue il reverse engineering dei server. Capisce cosa hai fatto manualmente, lo memorizza localmente in un repository Git, genera codice in grado di ricreare i tuoi sforzi e ti aiuta a distribuire tali modifiche alla produzione.


Non chiaro dalla loro homepage (sembra un po 'datato) se Python-3 è supportato. Qualcuno ha provato?
sphakka,

A giudicare dal repository GitHub che è stato attivo diversi anni fa, non scommetterei troppo denaro lavorando su Python3 fuori dagli schemi, ma sembra abbastanza ben scritto, quindi potrebbe non essere un grande sforzo da aggiungere in Python3 supporto.
dragon788,

1

Ciò si discosta leggermente dalla domanda originale in quanto fornirà anche i file di configurazione ADDED anziché quelli modificati. Anche se verranno catturati anche i file non inclusi in alcun pacchetto deb. Entrambi i comportamenti potrebbero essere desiderabili.

Dipende dall'avere usato etckeeper con git vcs idealmente sin dall'inizio, anche se dovrebbe funzionare anche se si aggiungono e si impegnano in modo specifico file precedentemente modificati dopo il primo commit. Si noti che uno di questi aspetti è che Ubuntu configura etckeeper per usare Bazaar di default (sponsor Canonical Bazaar), piuttosto che il git default impostato dagli sviluppatori di etckeeper.

L'idea è quella di ottenere un elenco di tutti i commit che non vengono eseguiti automaticamente dopo l'esecuzione e apt. Quindi elenca i file modificati in tutti tranne il primo 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 stringa di filtro può anche essere estesa per includere altri commit se vengono denominati in modo coerente. Potrebbe essere utile per le installazioni direttamente da un file deb o dal codice sorgente.

Un file notevole che questo raccoglie per me è mio xorg.conf- al momento devi aggiungerlo a / etc / X11 se ne hai bisogno. Anche le mie default/grubmodifiche vengono rilevate, sembra che questo sia copiato da / usr / share da uno script post-installazione piuttosto che essere elencato come parte di un pacchetto. Se è stata apportata una modifica a un file come questo, i metodi relativi a dpkg non lo riveleranno.


1
Cordiali saluti, git logora ha --invert-grepun'opzione che consente di filtrare commit non interessanti senza l'uso di sed.
Neil Mayhew,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.