Come trovare tutti i file di configurazione gestiti Debian che sono stati modificati rispetto al default?
Come trovare tutti i file di configurazione gestiti Debian che sono stati modificati rispetto al default?
Risposte:
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
md5sum --quiet
però 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?
debsums -ec
), perché sembra ottenere molti meno risultati di così.
debsums -ec
: se uso questo metodo per reinstallare le versioni dei pacchetti , alcuni dei file elencati tramite questo metodo non vengono modificati.
find /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
da man debsums
:
debsums -ce
List changed configuration files.
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 debsums
non non riportano come valido. Ciò significa file non tracciati o file che non sono "OK" (gli hash non corrispondono).
debsums --list-missing
per verificare se uno o più pacchetti mancano i checksum dei file inclusi. Oggi l'output dovrebbe essere vuoto.
In genere mi piace installare etckeeper sul sistema praticamente immediatamente. Con qualcosa come etckeeper riesco a trovare non solo quando il file è diverso, ma in realtà posso ottenere una differenza di esattamente come è diverso.
Vedere:
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.
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/grub
modifiche 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.
git log
ora ha --invert-grep
un'opzione che consente di filtrare commit non interessanti senza l'uso di sed
.