Come tenere traccia delle modifiche in / etc /


30

Vorrei tenere traccia delle modifiche in / etc /

Fondamentalmente mi piacerebbe sapere se un file è stato modificato, da yum updateo da un utente e ripristinarlo se non mi piace il chage. Ho pensato di usare un VCS come git, LVM o snapshot btrfs o un programma di backup per questo.

Cosa raccomanderesti?


Risposte:


32

Sembra che tu voglia etckeeper da Joey Hess di Debian, che gestisce i file /etcusando il controllo versione. Supporta git, mercurial, darc e bazar.

git è il VCS meglio supportato da etckeeper e gli utenti VCS hanno maggiori probabilità di saperlo. È possibile che la tua distribuzione abbia scelto di modificare etckeeper in modo che il suo VCS predefinito non sia git. Dovresti usare etckeeper con un VCS diverso da git se sei innamorato dell'altro VCS.


Etckeeper è facilmente uno degli strumenti di amministrazione più preziosi che ho installato sui miei computer ed è uno dei primissimi pacchetti che installo dopo aver configurato un nuovo sistema.
hlovdal

6

Non posso darti una raccomandazione finale, ma posso condividere alcuni pensieri sull'argomento. Dato che / etc è di solito piuttosto piccolo, potresti semplicemente optare per una semplice soluzione compressa tar-ball. Se difficilmente hai bisogno di passare attraverso la cronologia, potrebbe essere la soluzione più semplice da configurare.

Per me sarebbe noioso gestire volumi logici solo per tenere traccia di / etc e soprattutto perché non penso che le istantanee LVM siano state progettate per essere create regolarmente come mezzo per il backup di una quantità relativamente piccola di dati.

Mi sembra che btrfs sia molto meglio equipaggiato per questo, ma non è ancora stabile come, ad esempio, ext {2,3,4} e anche lo strumento fsck non è ancora stato fatto. Ma migliora continuamente.

Personalmente uso effettivamente git per tracciare / etc ma dovresti tenere presente che git non memorizza metainformation di file come proprietà o permessi! E verifica anche che la directory .git disponga dell'autorizzazione giusta. Ci sono alcuni strumenti che aiutano a risolvere questi problemi. Potresti dare un'occhiata a etc-keeper , che è stato sviluppato esattamente per tenere traccia di / etc o usare almeno qualcosa come gitperms o metastore per tracciare la metainformazione.


3

Per tenere traccia delle modifiche "indesiderate" utilizziamo un HIDS - nel nostro caso samhainaltri lo sono tripwireo aide. Tutti questi sistemi ti avviseranno quando è successo qualcosa di indesiderato.

A yum updatenon dovrebbe cambiare nulla senza lasciare un .rpmnew o .rpmold, se il file di configurazione è contrassegnato come tale nel corrispondente rpm.

Myselv Ho trovato una buona pratica fare una copia di sicurezza del file che ho intenzione di modificare cp -p origfile origfileYYYY-MM-DDcon la data del giorno prima.

Se tutto il resto fallisce, chiamo i ragazzi dei backup e chiedo un ripristino dall'ultimo backup "valido" noto.


1

Penso che puoi fare un'istantanea di file / directory in /etc.

Prima fai un elenco di file / etc / directory:

# ls -lha /etc >> /snapshotofetc

E se si crea un file in /etc

# touch testfile

e se riprendi un'istantanea di /etccome abbiamo fatto prima

# ls -lhs /etc /lastsnapshotofetc

e quindi puoi confrontare le differenze tra i 2 file in questo modo:

# diff /snapshotofetc /lastsnapshotofetc


0

Stai cercando la gestione della configurazione o il monitoraggio / monitoraggio delle modifiche al filesystem?

Se è prima, guarderei puppeto chef. CFEngineesiste a fini commerciali. puppetè una bestia popolare in questi giorni.

Se è il secondo, è difficile monitorare i cambiamenti del filesystem ma ci sono istanze di programmi come inotifye auditing del filesystem auditctlo SGI famma, ancora una volta, è una cosa di monitoraggio e può essere costosa implementazione (le prestazioni del filesystem possono peggiorare).


etckeeper può essere abbastanza esperto solo per cose specifiche / etc.
Nikhil Mulley,

Mi dispiace per essere così impreciso. Ho migliorato la domanda.
Taffer

0

Puoi controllare rsnapshotche mantiene istantanee istantanee di qualsiasi directory tu voglia ... puoi impostarlo per fare 24 ore, poi X quotidiani, poi X settimanali, ecc. Quanto vuoi per lo spazio su disco. È abbastanza intelligente da collegarsi quando i file non sono cambiati (utilizza rsyncdietro le quinte.


0

Potresti prendere in considerazione l'utilizzo git. Puoi È efficiente nel tracciare le modifiche e molto facile da usare per qualcosa del genere.

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

Credo che la configurazione iniziale vada in questo modo. Non lo faccio da un po '.

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

Questo approccio funziona meglio per un singolo server, ma può essere stratificato con altri strumenti che modificano il repository. Questo può essere utile sul tuo sito canarino (s) per garantire che si stiano verificando i cambiamenti previsti.

Potrebbe essere possibile utilizzare la clonazione per gestire file comuni a più server.


0

Ho uno script che viene eseguito ogni giorno e esegue il backup dei file che sono stati modificati rispetto al backup precedente:

#!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"

Si passa nel percorso in cui verranno creati i backup e quella directory avrà un elenco simile a questo (dopo alcune esecuzioni):

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

È possibile modificarlo un po 'per registrare le modifiche più spesso o utilizzare inotify per attivare una versione modificata dello script quando si verificano modifiche /etc.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.