Como verificar arquivos de configuração modificados em um sistema Debian?

62

Como encontrar todos os arquivos de configuração gerenciados do Debian que foram alterados em relação ao padrão?

malclocke
fonte
11
A questão vai aqui. A resposta está abaixo.
Dennis Williamson
Mudei a resposta que você forneceu para sua resposta.
Zoredache

Respostas:

78

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
malclocke
fonte
Funciona como um encanto no Ubuntu 10.4, eu gostaria de voto por você mil vezes :-) #
314 Ludwig Weinzierl
funciona bem. você pode usar isso md5sum --quietpara 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?
Sfussenegger 31/05
Seria interessante saber como minha resposta ( debsums -ec) realmente funciona, porque parece ter muito menos resultados que isso.
precisa saber é o seguinte
Além disso, aparentemente os únicos arquivos conf verificados quanto às versões dos pacotes são os que aparecem 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.
precisa saber é o seguinte
Como uma verificação adicional para ver quais alterações de configuração podem estar pendentes ou obsoletasfind /etc -type f \( -iname '*.ucf-dist' -o -iname '*.ucf-old' -o -iname '*.dpkg-old' -o -iname '*.dpkg-dist' \) -print | sort
sphakka 24/10
47

de man debsums:

  debsums -ce
          List changed configuration files.
naught101
fonte
11
Essa é de longe a melhor e mais simples resposta.
Mfisch
11
Somente debsums não está instalado por padrão e você pode não querer instalá-lo.
Alexis Wilke
11
@AlexisWilke: é 218KB e tem dependências mínimas ...
naught101
11

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 debsumsnã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).

blast_hardcheese
fonte
Deve-se também executar debsums --list-missingpara 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.
Mikko Rantalainen 22/09
6

Ou debsums -e | grep FAILED que também mostrará todos os arquivos de configuração ausentes

(do pacote debsums)

Wookey
fonte
2

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.

dragon788
fonte
Não está claro em sua página inicial (parece um pouco desatualizada) se o Python-3 for suportado. Alguém tentou?
sphakka 24/10
A julgar pelo repo do GitHub estar ativo há vários anos, eu não apostaria muito dinheiro trabalhando nele no Python3 imediatamente, mas parece muito bem escrito, portanto pode não ser um esforço enorme adicionar no Python3 Apoio, suporte.
dragon788 24/10
1

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/grubalteraçõ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.

Graeme
fonte
11
Para sua informação, git logagora existe uma --invert-grepopção que permite filtrar confirmações desinteressantes sem o uso de sed.
Neil Mayhew