Jak znaleźć wszystkie pliki konfiguracyjne zarządzane przez Debian, które zostały zmienione z domyślnych?
Jak znaleźć wszystkie pliki konfiguracyjne zarządzane przez Debian, które zostały zmienione z domyślnych?
Odpowiedzi:
Aby znaleźć wszystkie pliki konfiguracyjne zarządzane przez Debian, które zostały zmienione z domyślnych, możesz użyć takiego polecenia.
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS=" "{print $2,$1}' | md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}'
Edytuj (działa z zlokalizowanymi systemami):
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
Edytuj (działa z pakietami z OK w nazwie pliku):
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
aby uniknąć filtrowania plików OK za pomocą awk
(a tym samym problemów z lokalizacją?). Nawiasem mówiąc: nie wiesz, jak dołączyć nieśledzone pliki do / etc? Jak na przykład te w / etc / apache2 / sites-available?
debsums -ec
naprawdę działa moja odpowiedź ( ), ponieważ wydaje się, że przynosi znacznie mniej wyników niż to.
debsums -ec
: jeśli użyję tej metody do ponownego utworzenia wersji pakietów , to niektóre pliki wymienione za pomocą tej metody nie zostaną zmienione.
find /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
z man debsums
:
debsums -ce
List changed configuration files.
Przepraszam za nekro, ale chociaż odpowiedź @ naught101 była poprawna dla zmodyfikowanych plików, nie pomogła w przypadku dodanych plików. @ Graeme rozwiązanie jest dobre, ale zależy od etckeeper; Nie chcę modyfikować systemu plików.
find /etc -type f | grep -vFf <(debsums -e -r /etc | sed 's/[[:space:]]*OK$//')
Znajdź pliki w / etc /, które debsums
ma nie zgłosić jako ważny. Oznacza to, że nieśledzone pliki lub pliki, które nie są „OK” (skróty nie pasują).
debsums --list-missing
aby sprawdzić, czy brakuje jednego lub więcej pakietów sum kontrolnych dołączonych plików. Obecnie wyjście powinno być puste.
Zasadniczo lubię konfigurować etckeeper w systemie niemal natychmiast. Z czymś takim, jak etckeeper, mogę znaleźć nie tylko, gdy plik jest inny, ale faktycznie mogę uzyskać różnicę dokładnie tak, jak jest różnie.
Widzieć:
Może to być przesada, ale odkąd ktoś wspomniał o etckeeperze i kiedy badałem, natknąłem się na ten inny klejnot, który może być bardziej przydatny, jeśli próbujesz dowiedzieć się rzeczy „po fakcie”.
http://devstructure.com/blueprint/
Blueprint to proste narzędzie do zarządzania konfiguracją, które dokonuje inżynierii wstecznej serwerów. Sprawdza, co zrobiłeś ręcznie, przechowuje go lokalnie w repozytorium Git, generuje kod, który jest w stanie odtworzyć twoje wysiłki i pomaga wdrożyć te zmiany w środowisku produkcyjnym.
To trochę odbiega od pierwotnego pytania, ponieważ daje również DODANE pliki konfiguracyjne w przeciwieństwie do tylko tych zmodyfikowanych. Chociaż pliki nie zawarte w żadnym pakiecie deb również zostaną przechwycone. Oba zachowania mogą być pożądane.
Zależy to od tego, czy korzystałeś z etckeeper z git vcs idealnie od samego początku, chociaż powinno to również działać, jeśli specjalnie dodasz i zatwierdzisz wcześniej zmienione pliki po pierwszym zatwierdzeniu. Zauważ, że jedną z nich jest to, że Ubuntu konfiguruje etckeeper tak, aby domyślnie korzystał z Bazaar (sponsor kanoniczny Bazaar), a nie domyślny git ustawiony przez programistów etckeeper.
Chodzi o to, aby uzyskać listę wszystkich zatwierdzeń, które nie są dokonywane automatycznie po i apt run. Następnie wyświetl listę plików zmienionych we wszystkich oprócz pierwszego zatwierdzenia:
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"
Łańcuch filtru można również rozszerzyć, aby obejmował inne zatwierdzenia, jeśli są one konsekwentnie nazywane. Może być dobry dla instalacji bezpośrednio z pliku deb lub kodu źródłowego.
Godnym uwagi plikiem, który dla mnie ten pobiera, jest mój xorg.conf
- obecnie musisz go dodać do / etc / X11, jeśli go potrzebujesz. Również moje default/grub
zmiany są pobierane, wygląda na to, że są one kopiowane z / usr / share przez skrypt poinstalacyjny, a nie są wymienione jako część pakietu. Jeśli dokonano zmiany w takim pliku, metody powiązane z dpkg go nie ujawnią.
git log
teraz ma --invert-grep
opcję, która pozwala odfiltrować nieciekawe zatwierdzenia bez użycia sed
.