Respostas:
Para encontrar todos os arquivos de configuração gerenciados pela Debian que foram alterados a partir do padrão, você pode usar um comando como este.
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS=" "{print $2,$1}' | md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}'
Editar (funciona com sistemas localizados):
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
Editar (funciona com pacotes com OK no nome do arquivo):
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
para evitar a filtragem de arquivos OK com awk
(e, portanto, os problemas de localização?). A propósito: você não sabe como incluir arquivos não rastreados no / etc? Como aqueles em / etc / apache2 / sites-available por exemplo?
debsums -ec
) realmente funciona, porque parece ter muito menos resultados que isso.
debsums -ec
: se eu usar esse método para reinstalar as versões dos pacotes , alguns dos arquivos listados por esse método não serão alterados.
find /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
de man debsums
:
debsums -ce
List changed configuration files.
Desculpe por necro, mas enquanto a resposta de @ naught101 estava correta para arquivos modificados , não ajudou em arquivos adicionados . A solução do @ Graeme é boa, mas depende do etckeeper; Não quero modificar o sistema de arquivos.
find /etc -type f | grep -vFf <(debsums -e -r /etc | sed 's/[[:space:]]*OK$//')
Encontre arquivos em / etc / que debsums
não sejam reportados como válidos. Isso significa arquivos não rastreados ou arquivos que não estão "OK" (os hashes não correspondem).
debsums --list-missing
para verificar se um ou mais pacotes estão faltando somas de verificação dos arquivos incluídos. Hoje em dia a saída deve estar vazia.
Eu geralmente gosto de configurar o etckeeper no sistema praticamente imediatamente. Com algo como o etckeeper, posso encontrar não apenas quando o arquivo é diferente, mas também consigo obter uma diferença exata de como ele é diferente.
Vejo:
Isso pode ser um exagero, mas desde que alguém mencionou o etckeeper e, enquanto eu estava investigando, me deparei com essa outra jóia que pode ser mais útil se você estiver tentando descobrir as coisas "depois do fato".
http://devstructure.com/blueprint/
O Blueprint é uma ferramenta simples de gerenciamento de configuração que faz engenharia reversa de servidores. Ele descobre o que você fez manualmente, o armazena localmente em um repositório Git, gera código capaz de recriar seus esforços e ajuda a implantar essas alterações na produção.
Isso se afasta um pouco da questão original, na medida em que também fornecerá arquivos de configuração ADDED, em oposição aos modificados. Embora arquivos não incluídos em qualquer pacote deb também sejam capturados. Ambos os comportamentos podem muito bem ser desejáveis.
Depende do uso do etckeeper com o git vcs, idealmente desde o início, embora também deva funcionar se você adicionar e confirmar especificamente arquivos alterados anteriormente após o primeiro commit. Note que uma dica aqui é que o Ubuntu configura o etckeeper para usar o Bazaar por padrão (patrocinador da Canonical Bazaar), em vez do padrão git definido pelos desenvolvedores do etckeeper.
A idéia é obter uma lista de todos os commits que não são feitos automaticamente após a execução do apt. Em seguida, liste os arquivos alterados em todos, exceto no primeiro 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"
A cadeia de filtros também pode ser estendida para abranger outras confirmações se elas forem nomeadas consistentemente. Pode ser bom para instalações diretamente de um arquivo deb ou do código fonte.
Um arquivo notável que ele seleciona para mim é o meu xorg.conf
- você atualmente deve adicioná-lo ao / etc / X11, se precisar. Além disso, minhas default/grub
alterações são detectadas, parece que isso é copiado de / usr / share por um script pós-instalação, em vez de ser listado como parte de um pacote. Se uma alteração foi feita em um arquivo como esse, os métodos relacionados ao dpkg não a revelam.
git log
agora existe uma --invert-grep
opção que permite filtrar confirmações desinteressantes sem o uso de sed
.