Ответы:
Чтобы найти все управляемые файлы конфигурации Debian, которые были изменены по умолчанию, вы можете использовать команду, подобную этой.
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS=" "{print $2,$1}' | md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}'
Редактировать (работает с локализованными системами):
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
Изменить (работает с пакетами с OK в имени файла):
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
хотя, чтобы избежать фильтрации файлов ОК с awk
(и, следовательно, проблемы локализации?) Кстати: вы не знаете, как включить неотслеживаемые файлы в / etc? Например, в / etc / apache2 / sites-available?
debsums -ec
самом деле работает мой answer ( ), потому что он, похоже, дает гораздо меньше результатов, чем этот.
debsums -ec
: если я использую этот метод для повторной установки версий пакетов , то некоторые файлы, перечисленные с помощью этого метода, не изменяются.
find /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
от man debsums
:
debsums -ce
List changed configuration files.
Извините за некро, но хотя ответ @ naught101 был правильным для измененных файлов, для добавленных файлов это не помогло . Решение @ Грэма хорошо, но зависит от etckeeper; Я не хочу изменять файловую систему.
find /etc -type f | grep -vFf <(debsums -e -r /etc | sed 's/[[:space:]]*OK$//')
Поиск файлов в / и т.д. / , что debsums
делает не сообщать действительным. Это означает, что не отслеженные файлы или файлы, которые не "ОК" (хэши не совпадают).
debsums --list-missing
чтобы проверить, не пропущены ли в одном или нескольких пакетах контрольные суммы включенных файлов. В настоящее время вывод должен быть пустым.
Как правило, мне нравится устанавливать etckeeper в системе сразу. С помощью чего-то вроде etckeeper я могу найти не только файл, но и узнать, насколько он отличается.
Видеть:
Это может быть излишним, но так как кто-то упомянул etckeeper, и в то время как я занимался расследованием, я наткнулся на этот другой драгоценный камень, который может быть более полезным, если вы пытаетесь выяснить вещи «после факта».
http://devstructure.com/blueprint/
Blueprint - это простой инструмент управления конфигурацией, который перепроектирует серверы. Он выясняет, что вы сделали вручную, сохраняет его локально в Git-репозитории, генерирует код, который способен воссоздать ваши усилия, и помогает вам внедрить эти изменения в производство.
Это немного отличается от первоначального вопроса в том, что он также даст добавленные файлы конфигурации, а не только те, которые были изменены. Хотя файлы, не включенные ни в один пакет deb, также будут перехвачены. Оба поведения вполне могут быть желательны.
Это зависит от того, использовали ли вы etckeeper с git vcs в идеале с самого начала, хотя это также должно работать, если вы специально добавляете и фиксируете ранее измененные файлы после первой фиксации. Обратите внимание, что здесь есть одна проблема: Ubuntu настраивает etckeeper для использования Bazaar по умолчанию (спонсор Canonical Bazaar), а не по умолчанию, установленным разработчиками etckeeper.
Идея состоит в том, чтобы получить список всех коммитов, которые не были сделаны автоматически после запуска. Затем перечислите файлы, измененные во всех, кроме самого первого коммита:
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"
Строка фильтра также может быть расширена, чтобы охватить другие коммиты, если они названы последовательно. Может быть хорошо для установки непосредственно из файла deb или из исходного кода.
Примечательный файл, который он мне забирает, - мой xorg.conf
- вам нужно добавить его в / etc / X11 самостоятельно, если вам это нужно. Также мои default/grub
изменения подобраны, кажется, что это скопировано из / usr / share скриптом после установки, а не указано как часть пакета. Если в файл, подобный этому, было внесено изменение, методы, связанные с dpkg, не будут его отображать
git log
теперь есть --invert-grep
опция, которая позволяет отфильтровывать неинтересные коммиты без использования sed
.