Etckeeper

Aus LOMSO
Zur Navigation springen Zur Suche springen
Du bist hier : Wiki home -> Software -> Sicherheit -> Etckeeper



etckeeper verwaltet die Konfigurationsdateien in /etc mittels einem Versionskontrollsystem (z.B. git). Es integriert sich dabei auch in apt, um damit die Änderungen bei jeder Paketinstallation mitzuprotokollieren.

Installation

apt-get install etckeeper

Standardmässig wird git als VCS verwendet, das ist gut so. Danach sollte man sofort noch ein paar Variablen setzen :

sudo git config --global user.name "Your Name"
sudo git config --global user.email you@example.com

Dies muss als root geschehen, denn etckeeper läuft mit dessen ID. Es ist daher nicht möglich, etckeeper und den eigentlichen root-Benutzer bei den git-Commits von einander zu trennen.

Das komplette /etc Verzeichnis ist nun unter git-Kontrolle. Man kann Dateien und Verzeichnisse wie gewohnt mittels der Datei .gitignore ausnehmen.

Konfiguration

In der /etc/etckeeper/etckeeper.conf :

  • AVOID_COMMIT_BEFORE_INSTALL=1 -> eine Installation per apt wird abgebrochen, falls uncommited Änderungen in /etc vorliegen. Das zwingt zu einem recht sauberen Arbeitsstil !

Gebrauch

Mit apt/aptitude erfolgt alles automatisch - es wird ein neuer Commit per apt-Lauf erzeugt

Wenn man selber Dateien in /etc editiert, kann man sie, wie bei git üblich, mittels git add / git commit einchecken. etckeeper benutzt keine getrennte Datenhaltung, es wird alles über git verfolgt, etckeeper ist lediglich ein Frontend dafür.

Wer mit git nicht zurechtkommt, kann aber auch etckeeper commit <Kommentar> aufrufen. Das bündelt alle Änderungen zu einem commit zusammen. Allerdings muss die Betonung auf alle liegen ! Es ist nicht möglich unterschiedliche Änderungen in getrennte commits zu teilen. Daher muss man entweder die Änderungen nacheinander machen (sauberer Arbitsstil, eine Sache nach der anderen...), oder aber man muss git-Befehle verwenden.

Externes git Repository

wird als "remote" eingerichtet (URL anpassen) :

cd /etc
git remote add origin git@github.com:mein.git
git push origin master

Das git push origin master dient 2 Zwecken :

  1. den SSH Schlüssel des Remote Host zu bestätigen - macht nur im interaktiven Modus Sinn
  2. den default Branch (master) zu setzen - damit reicht dann ein git push origin um die Daten zum Remote zu pushen

Damit beim Commit die Daten weitergereicht werden, legt man noch die Datei /etc/etckeeper/commit.d/99git-push an (nicht vergessen, sie ausführbar zu machen !):

#!/bin/sh
git push origin

Wichtig : das Repository sollte nicht öffentlich erreichbar sein, denn es sind alle Dateien von /etc dort sichtbar, also auch die /etc/shadow (Passwörter), die Konfigurationsdateien von Email/Webserver/MysqlDB/Firewall/...