Como acompanhar as alterações no / etc /

30

Gostaria de acompanhar as alterações no / etc /

Basicamente, eu gostaria de saber se um arquivo foi alterado, por yum updateou por um usuário, e reverter se não gostar da mudança. Pensei em usar um VCS como git, LVM ou snapshots btrfs ou um programa de backup para isso.

O que você recomendaria?

taffer
fonte

Respostas:

32

Parece que você deseja o etckeeper de Joey Hess, do Debian, que gerencia arquivos sob o /etccontrole de versão. Ele suporta git, mercurial, darcs e bazar.

O git é o VCS mais suportado pelo etckeeper e os usuários do VCS provavelmente conhecerão. É possível que sua distribuição tenha escolhido modificar o etckeeper para que seu VCS padrão não seja o git. Você só deve usar o etckeeper com um VCS diferente do git se estiver apaixonado pelo outro VCS.

Faheem Mitha
fonte
O Etckeeper é facilmente uma das ferramentas administrativas mais valiosas que instalei em minhas máquinas e é um dos primeiros pacotes que instalo após a instalação de um novo sistema.
precisa saber é o seguinte
6

Não posso lhe dar uma recomendação final, mas posso compartilhar algumas idéias sobre o assunto. Como o / etc geralmente é pequeno, você pode optar por uma solução simples de tar-ball compactada. Se você dificilmente precisar passar pela história, talvez seja a solução mais fácil de configurar.

Para mim, seria tedioso gerenciar volumes lógicos apenas para acompanhar / etc e, especialmente, não acho que os snapshots do LVM foram projetados para serem criados regularmente como meio de backup de uma quantidade relativamente pequena de dados.

O btrfs me parece muito melhor equipado para isso, mas ainda não é tão estável quanto, por exemplo, o ext {2,3,4} e a ferramenta fsck também não está pronta ainda. Mas melhora continuamente.

Pessoalmente, na verdade, eu uso o git para rastrear o / etc, mas você deve ter em mente que o git não armazena as metainformações dos arquivos, como propriedade ou permissão! E também verifique se o diretório .git tem a permissão correta. Existem algumas ferramentas que ajudam com esses problemas. Você pode dar uma olhada no etc-keeper , que foi desenvolvido exatamente para acompanhar o / etc ou usar pelo menos algo como gitperms ou metastore para rastrear as metainformações.

antje-m
fonte
3

Para acompanhar as alterações "indesejadas", usamos um HIDS - no nosso caso, samhainoutros são tripwireou aide. Todos esses sistemas o alertarão quando algo indesejado acontecer.

A yum updatenão deve mudar nada sem deixar um .rpmnew ou .rpmold, se o arquivo de configuração estiver marcado como tal no rpm correspondente.

Myselv, achei uma boa prática fazer uma cópia de segurança do arquivo com o qual vou modificar cp -p origfile origfileYYYY-MM-DDcom a data do dia anterior.

Se tudo mais falhar - chamo os caras de backups e peço uma restauração do último backup "bom" conhecido.

Nils
fonte
1

Eu acho que você pode fazer um instantâneo de arquivos / diretórios no /etc.

Primeiro faça uma lista de arquivos / etc / directory:

# ls -lha /etc >> /snapshotofetc

E se você criar um arquivo no /etc

# touch testfile

e se você retomar um instantâneo do /etcque fizemos antes

# ls -lhs /etc /lastsnapshotofetc

e então você pode comparar as diferenças entre os 2 arquivos como este:

# diff /snapshotofetc /lastsnapshotofetc
eu vim para
fonte
1

Sempre há radmind . Você pode reverter essa alteração imediatamente, se não gostar.

chiggsy
fonte
0

Você está procurando gerenciamento de configuração ou rastreando / monitorando as alterações do sistema de arquivos?

Se for mais cedo, eu examinaria puppetou chef. CFEngineexiste para fins comerciais. puppeté uma fera popular nos dias de hoje.

Se for o último, é difícil monitorar as alterações do sistema de arquivos; no entanto, existem instâncias de programas como inotifyauditoria de sistema de arquivos auditctlou SGI, fammas, novamente, é uma coisa de monitoramento e pode ser uma implementação cara (o desempenho do sistema de arquivos pode se deteriorar).

Nikhil Mulley
fonte
O etckeeper pode ser adepto silencioso de apenas / etc coisas específicas.
precisa saber é o seguinte
Desculpe por ser tão impreciso. Eu melhorei a pergunta.
taffer
0

Você pode verificar o rsnapshotque mantém instantâneos de hora em hora de qualquer diretório que desejar ... você pode configurá-lo para fazer 24 horas, depois X diários, depois X semanais, etc. Tanto quanto desejar para o espaço em disco. É inteligente o suficiente para criar um link físico quando os arquivos não foram alterados (é usado rsyncnos bastidores.

Aaron D. Marasco
fonte
0

Você pode considerar usar git. Você pode: É eficiente no rastreamento de alterações e muito fácil de usar para algo assim.

git status # Show changed files
git diff # Show file differences (paged automatically)
git commit -a # Commit all changes. 

Eu acredito que a configuração inicial é assim. Eu não faço isso há um tempo.

cd /etc
git init
git add *
git commit -a -m "Created repository"

Essa abordagem funciona melhor em um único servidor, mas pode ser aplicada em camadas com outras ferramentas que alteram o repositório. Isso pode ser útil no (s) seu (s) canário (s) para garantir que as mudanças esperadas estejam ocorrendo.

Você pode usar a clonagem para manipular arquivos comuns a vários servidores.

BillThor
fonte
0

Eu tenho um script que é executado todos os dias e faz backup de arquivos que foram alterados desde o backup anterior:

#!bin/bash
ext=$(date +"%Y%m%d")_ChangeS
mkdir -p "$1/$ext" && \
  ionice -c3 rsync -ah --numeric-ids --inplace --backup \
                   --backup-dir="$1/$ext" \
                   --include="/etc" / "$1" && \
  rmdir --ignore-fail-on-non-empty "$1/$ext"

Você passa no caminho em que os backups seriam criados e esse diretório terá uma listagem semelhante a esta (após algumas execuções):

20120106_ChangeS  etc
$ls 20120106_ChangeS/etc/
cron.d

Você pode modificá-lo um pouco para registrar alterações com mais frequência ou usar o inotify para acionar uma versão modificada do script quando ocorrerem alterações /etc.

trk7
fonte