Konfigurationsdateien verändern sich im Leben fast jedes Linux-Systems. Doch nicht immer zum Guten – manchmal degenerieren einzelne “/etc”-Dateien regelrecht. Dann ist “Sysadmin”-Kolumnist Charly Kühnast froh, einen Status aus besseren Tagen wiederherstellen zu können.
Über Ascii-Lifting mit Etckeeper hat das Linux-Magazin bereits berichtet ([1], [2]). Das Tool gehört zum Begleitgeschwader vieler Distributionen und findet sich ansonsten unter [3]. Auch Git muss natürlich auf dem Rechner installiert sein. Wer Git auf dem System noch nicht benutzt hat, sollten ein paar grundlegende Einstellungen vornehmen:
git config --global user.name "Charly" git config --global user.email "charly@example.com" git config --global core.edito "vim"
Da ich die Etckeeper- und Git-Kommandos mit »sudo« ausführen werde, verhindern diese Einstellungen, dass sich der »root« -Benutzer als Committer einträgt.
Den Zustand der Jugend konservieren
Zunächst muss ich das neue Repository initialisieren, dann speichere ich darin erstmalig alle »/etc« -Dateien:
cd /etc sudo etckeeper init sudo etckeeper commit "Initial etc commit"
Manche Distributionen, Ubuntu etwa, führen diesen Schritt automatisch bereits beim Installieren von Etckeeper aus. In diesem Fall sehe ich eine Ausgabe wie:
> On branch master > nothing to commit, working directory clean
Manchmal will ich nicht alle Daten in der »/etc/« im Repository haben. Welche Verzeichnisse Etckeeper ignorieren soll, teile ich Git über die Datei ».gitignore« mit, und zwar gleich nach der Zeile »# end section […] etckeeper« :
# end section managed by etckeeper ghostscript/*
Nun sind aber seit dem ersten Commit alle Daten aus »/etc/« schon im Repository. Ich muss die unerwünschten also manuell entfernen:
sudo git rm -r --cached ghostscript/*
Zur Demonstration ändere ich eine Kleinigkeit an der »/etc/postfix/main.cf« . Und tatsächlich: »sudo git status« zeigt an, dass Git beim Vergleich der Daten mit dem Repository den Unterschied bemerkt (Abbildung 1).
Jetzt darf ich die neue Version einchecken:
sudo git commit -a -m "main.cf changed"
Eine Übersicht über alle Aktionen liefert »sudo git log« :
commit 9695e06a8175bd5cf485316f20d8fb6d6fcc1e49
Author: Charly <charly@example.com>
Date: Wed May 11 14:18:50 2016 +0200
main.cf changed
Wichtig: Das Ganze implementiert eine Versionierung, kein Backup! Etckeeper und Git helfen Änderungen in Konfigurationsdateien nachzuvollziehen und notfalls zurückzurollen – aber das ist ja schon viel für alle, die etwas kaputtkonfiguriert haben.
Infos
- Mathias Huber, “Etckeeper stellt Systemkonfiguration unter Versionskontrolle”: https://www.linux-magazin.de/Online-Artikel/Etckeeper-stellt-Systemkonfiguration-unter-Versionskontrolle
- Markus Stubbig, “Wie sich Admins die ungeliebte Dokumentation erleichtern”: Linux-Magazin 11/15, S. 76
- Etckeeper: https://github.com/joeyh/etckeeper








