So verfolgen Sie Änderungen in / etc /

30

Ich möchte Änderungen in / etc / verfolgen

Grundsätzlich würde ich gerne wissen, ob eine Datei geändert wurde, von yum updateoder von einem Benutzer, und sie zurücksetzen, wenn mir die Änderung nicht gefällt. Ich dachte daran, ein VCS wie git, LVM oder btrfs-Snapshots oder ein Backup-Programm dafür zu verwenden.

Was würdest du empfehlen?

Taffer
quelle
1
Mögliche Duplikate von Best Practice zum Sichern von Konfigurationsdateien
Enzotib

Antworten:

32

Es hört sich so an, als wollten Sie einen Prüfer von Joey Hess von Debian, der Dateien unter /etcVerwendung der Versionskontrolle verwaltet. Es unterstützt Git, Mercurial, Darcs und Basar.

git ist das VCS, das von etckeeper am besten unterstützt wird, und die VCS-Benutzer wissen es am wahrscheinlichsten. Möglicherweise hat Ihre Distribution etckeeper so geändert, dass das Standard-VCS nicht git ist. Sie sollten etckeeper nur mit einem anderen VCS als git verwenden, wenn Sie in das andere VCS verliebt sind.

Faheem Mitha
quelle
Etckeeper ist eines der wertvollsten Admin-Tools, die ich auf meinen Rechnern installiert habe, und eines der allerersten Pakete, die ich nach dem Einrichten eines neuen Systems installiere.
hlovdal
6

Ich kann Ihnen keine endgültige Empfehlung geben, aber ich kann ein paar Gedanken zu diesem Thema teilen. Da / etc normalerweise eher klein ist, können Sie sich für eine einfache Lösung mit komprimiertem Teer entscheiden. Wenn Sie den Verlauf kaum durchgehen müssen, ist dies möglicherweise die einfachste Lösung für die Einrichtung.

Für mich wäre es zu mühsam, logische Volumes zu verwalten, nur um / etc im Auge zu behalten, und vor allem, weil ich nicht der Meinung bin, dass LVM-Snapshots so konzipiert wurden, dass sie regelmäßig erstellt werden, um eine relativ kleine Datenmenge zu sichern.

btrfs scheint mir dafür weitaus besser gerüstet zu sein, aber es ist immer noch nicht so stabil wie zum Beispiel ext {2,3,4} und das fsck-Tool ist auch noch nicht fertig. Aber es wird immer besser.

Persönlich verwende ich git, um / etc zu verfolgen, aber Sie sollten bedenken, dass git keine Dateimetainformationen wie Besitz oder Erlaubnis speichert! Überprüfen Sie auch, ob das .git-Verzeichnis die richtige Berechtigung hat. Es gibt jedoch einige Tools, die bei diesen Problemen helfen. Vielleicht möchten Sie einen Blick auf etc-keeper werfen , das genau für das Verfolgen von / etc entwickelt wurde, oder zumindest so etwas wie gitperms oder metastore verwenden , um die Metainformation zu verfolgen.

antje-m
quelle
3

Um "unerwünschte" Änderungen im Auge zu behalten, verwenden wir ein HIDS - in unserem Fall sind samhainandere tripwireoder aide. Alle diese Systeme warnen Sie, wenn etwas Unerwünschtes passiert ist.

A yum updatesollte nichts ändern, ohne eine .rpmnew oder .rpmold zu hinterlassen, wenn die Konfigurationsdatei in der entsprechenden rpm als solche gekennzeichnet ist.

Myselv Ich fand es eine gute Praxis, eine Sicherheitskopie der Datei zu erstellen, die ich cp -p origfile origfileYYYY-MM-DDmit dem Datum des Vortages ändern werde .

Wenn alles andere fehlschlägt, rufe ich die Backup-Leute an und frage nach einer Wiederherstellung von dem letzten bekannten "guten" Backup.

Nils
quelle
1

Ich denke, Sie können einen Schnappschuss von Dateien / Verzeichnissen in machen /etc.

Erstellen Sie zuerst eine Liste der Dateien / etc / directory:

# ls -lha /etc >> /snapshotofetc

Und wenn Sie eine Datei in der machen /etc

# touch testfile

und wenn Sie einen Schnappschuss von dem machen, /etcwas wir vorher gemacht haben

# ls -lhs /etc /lastsnapshotofetc

und dann können Sie die Unterschiede zwischen den 2 Dateien wie folgt vergleichen:

# diff /snapshotofetc /lastsnapshotofetc
ich kam zu
quelle
1

Es gibt immer Radmind . Sie können diese Änderung sofort rückgängig machen, wenn Sie sie nicht mögen.

chiggsy
quelle
0

Suchen Sie nach Konfigurationsmanagement oder nach Verfolgung / Überwachung der Dateisystemänderungen?

Wenn es früher ist, würde ich puppetoder schauen chef. CFEngineexistiert für kommerzielle Zwecke. puppetist heutzutage ein beliebtes Tier.

Wenn es das spätere ist, ist es schwierig, die Dateisystemänderungen zu überwachen, es gibt jedoch Programme wie inotifyund Dateisystemprüfungen auditctloder SGIs, famaber auch dies ist eine Überwachungssache und kann eine teure Implementierung sein (die Dateisystemleistung kann sich verschlechtern).

Nikhil Mulley
quelle
etckeeper kann für nur / etc spezifische Sachen leise geschickt sein.
Nikhil Mulley
Tut mir leid, dass ich so ungenau bin. Ich habe die Frage verbessert.
Taffer
0

Sie können herausfinden, rsnapshotwelche stündlichen Schnappschüsse von beliebigen Verzeichnissen gespeichert werden. Sie können festlegen, dass 24 Stunden, dann X Tageszeitungen, dann X Wochenzeitungen usw. ausgeführt werden sollen. So viel Speicherplatz Sie möchten. Es ist intelligent genug, um eine feste Verknüpfung herzustellen, wenn sich die Dateien nicht geändert haben (es wird rsynchinter den Kulissen verwendet).

Aaron D. Marasco
quelle
0

Sie könnten mit berücksichtigen git. Sie können Änderungen auf effiziente Weise nachverfolgen und sind für so etwas sehr einfach zu verwenden.

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

Ich glaube, das anfängliche Setup geht so. Ich habe es eine Weile nicht getan.

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

Dieser Ansatz funktioniert am besten für einen einzelnen Server, kann jedoch mit anderen Tools kombiniert werden, die das Repository ändern. Dies kann auf Ihren Kanarischen Websites nützlich sein, um sicherzustellen, dass die erwarteten Änderungen eintreten.

Möglicherweise können Sie das Klonen verwenden, um Dateien zu verarbeiten, die mehreren Servern gemeinsam sind.

BillThor
quelle
0

Ich habe ein Skript, das täglich ausgeführt wird und Dateien sichert, die sich seit der vorherigen Sicherung geändert haben:

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

Sie übergeben den Pfad, in dem die Sicherungen erstellt werden, und dieses Verzeichnis enthält eine ähnliche Liste (nach einigen Durchläufen):

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

Sie können es ein wenig ändern, um Änderungen häufiger aufzuzeichnen, oder inotify verwenden, um eine geänderte Version des Skripts auszulösen, wenn Änderungen am vorgenommen werden /etc.

trk7
quelle