Vraag Hoe te controleren op gewijzigde configuratiebestanden op een Debian-systeem?


Hoe vind ik alle door Debian beheerde configuratiebestanden die zijn gewijzigd van de standaardinstellingen?


54
2017-12-02 22:26


oorsprong


De vraag gaat hier. Het antwoord komt hieronder. - Dennis Williamson
Ik heb het antwoord dat u heeft gegeven, verplaatst naar uw antwoord. - Zoredache


antwoorden:


Om alle door Debian beheerde configuratiebestanden te vinden die van de standaard zijn gewijzigd, kunt u een dergelijke opdracht gebruiken.

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

Bewerken (werkt met gelokaliseerde 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

Bewerken (werkt met pakketten met OK in de bestandsnaam):

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



Werkt als charme op Ubuntu 10.4, ik zou je duizend keer willen overtuigen :-) - Ludwig Weinzierl
werkt goed. je zou kunnen gebruiken md5sum --quiet hoewel om te vermijden dat bestanden met OK worden gefilterd awk (en dus de localisatieproblemen?). Trouwens: je weet niet hoe je niet-traceerde bestanden moet opnemen in / etc? Zoals bijvoorbeeld in / etc / apache2 / sites-beschikbaar? - sfussenegger
Zou interessant zijn om te weten hoe mijn antwoord (debsums -ec) werkt echt, omdat het veel minder resultaten lijkt te krijgen dan dit. - naught101
Ook zijn kennelijk de enige conf-bestanden die worden gecontroleerd op pakketversies die vervolgens binnenkomen debsums -ec: als ik gebruik deze methode om pakketversies opnieuw te installeren, dan zijn sommige van de bestanden die via deze methode worden vermeld, niet gewijzigd. - naught101


van man debsums:

  debsums -ce
          List changed configuration files.

36
2017-07-21 10:50



Dit is veruit het eenvoudigste en beste antwoord. - mfisch
Alleen debums worden standaard niet geïnstalleerd en u wilt het misschien niet installeren. - Alexis Wilke
@ Alexis Wilke: het is 218 kb en heeft minimale afhankelijkheden ... - naught101


Sorry voor necro, maar terwijl het antwoord van @ naught101 correct was gemodificeerde bestanden, het hielp niet voor toegevoegd bestanden. De oplossing van @ Graeme is leuk, maar hangt af van etckeeper; Ik wil het bestandssysteem niet wijzigen.

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

Zoek naar bestanden in / etc / dat debsums doet niet rapport als geldig. Dit betekent niet-traceerde bestanden of bestanden die niet "OK" zijn (hashes komen niet overeen).


9
2018-01-11 22:33





Ik houd er over het algemeen van om etckeeper op het systeem te installeren vrijwel onmiddellijk. Met iets als etckeeper kan ik niet alleen vinden wanneer het bestand anders is, maar ik kan ook een diff krijgen van precies hoe het anders is.

Zien:


8
2017-12-02 22:49





Of debsums -e | grep FAILED die ook alle ontbrekende conffiles zal tonen

(uit het debsums-pakket)


5
2018-04-08 15:45





Dit wijkt een beetje af van de oorspronkelijke vraag in die zin dat het ook ADDED-configuratiebestanden zal geven, in tegenstelling tot alleen de aangepaste bestanden. Hoewel bestanden die niet zijn opgenomen in een deb-pakket ook worden gepakt. Beide gedragingen kunnen zeer wenselijk zijn.

Het hangt ervan af of je etckeeper met git vcs hebt gebruikt, idealiter vanaf het begin, hoewel het ook zou moeten werken als je specifiek eerder gewijzigde bestanden toevoegt en commit. na de eerste commit. Merk op dat je hier bent dat Ubuntu etckeeper configureert om Bazaar standaard te gebruiken (Canonieke sponsor Bazaar), in plaats van de git standaard die is ingesteld door de ontwikkelaars van etckeeper.

Het idee is om een ​​lijst te krijgen van alle commits die niet automatisch worden gemaakt na en apt run. Geef vervolgens de bestanden weer die zijn gewijzigd in alle, behalve de allereerste 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"

De filterreeks kan ook worden uitgebreid om andere commits te omvatten als ze consistent worden genoemd. Kan goed zijn voor installaties rechtstreeks vanuit een deb-bestand of vanuit de broncode.

Een opmerkelijk bestand dat dit voor mij ophaalt, is het mijne xorg.conf - je moet dit zelf toevoegen aan / etc / X11 als je het nodig hebt. Ook mijn default/grub veranderingen worden opgepikt, het lijkt erop dat dit wordt gekopieerd van / usr / share door een script na installatie in plaats van dat het als onderdeel van een pakket wordt vermeld. Als er een wijziging is aangebracht in een bestand als dit, zullen dpkg-gerelateerde methoden het niet onthullen.


1
2017-09-26 13:11



TER INFO, git log heeft nu een --invert-grep optie die het mogelijk maakt oninteressante commits te filteren zonder het gebruik van sed. - Neil Mayhew


Dit is misschien overdreven maar omdat iemand etckeeper noemde en terwijl ik aan het onderzoeken was, kwam ik dit andere juweeltje tegen dat misschien nuttiger zou zijn als je dingen probeert te achterhalen "na het feit".

http://devstructure.com/blueprint/

Blueprint is een eenvoudige configuratiebeheertool die servers reverse-engineert. Het zoekt uit wat je handmatig hebt gedaan, slaat het lokaal op in een Git-repository, genereert code waarmee je je inspanningen opnieuw kunt creëren en helpt je bij het implementeren van die wijzigingen in de productie.


0
2018-06-28 15:37