Datenrettung
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
ecryptfs-utils 🇬🇧 bietet eine sehr einfache Möglichkeit einen
einzelnen Ordner (~/Private) innerhalb eines nicht verschlüsselten Homeverzeichnisses, bzw. das
gesamte Homeverzeichnis
eines Benutzers zu verschlüsseln. Die Ent- bzw. Verschlüsselung geschieht dabei automatisch beim Ein-/Ausloggen des Benutzers.
Hinweis:
Daten im "verschlüsselten" Bereich sind, sobald der jeweilige Benutzer sich angemeldet hat, auch prinzipiell von anderen Nutzern oder Anwendungen lesbar. Falls dies nicht gewünscht ist, sind die Rechte [3] entsprechend zu setzen.
Sollte es trotz aller Vorsichtsmaßnahmen hierbei zu Problem kommen, (etwa mit der Fehlermeldung "ERROR: Encrypted private directory is not setup properly"), soll die nachfolgende Beschreibung helfen, wieder Zugriff auf die verschlüsselten Daten zu erhalten. Manchmal möchte man auch einfach von einem anderen System, beispielsweise einem neu oder parallel installierten Ubuntu, Zugriff auf einen verschlüsselten Ordner bekommen.
Allgemeine Hinweise¶
Sollte das System nicht mehr bis zum Desktop gelangen, so startet man mit einem Live-System (CD/DVD bzw. USB-Stick) gleicher Architektur (i386, amd64 bzw. mac). Will man den Zugriff über einen Dateimanager ausführen, so muss dabei auch noch die Desktop-Variante (GNOME, KDE bzw. XFCE) berücksichtigt werden.
Achtung!
Ist die Partition mit dem Verzeichnis ~/.Private bzw. mit dem verschlüsselten Homeverzeichnis (integrierte oder auch separate Partition) so defekt, dass diese wie nachfolgend beschrieben nicht mehr einzubinden ist, so muss man davon ausgehen, das die Daten mit einfachen Mitteln nicht mehr zu retten sind.
Daten automatisiert auslesen¶
Mit dem Befehl ecryptfs-recover-private
, kann man jeden verschlüsselten Ordner entschlüsseln und mit Lesezugriff einbinden lassen. Dabei muss das Login-Passwort des Benutzers, für den die Verschlüsselung angelegt wurde, bekannt sein.
Vorgehen:
Zunächst wird die Zielpartition, auf der sich die verschlüsselten Daten befinden, in einem funktionierenden System eingebunden. Das funktionierende System kann ein parallel installiertes Ubuntu oder ein Livesystem (CD/DVD bzw. USB-Stick) sein. Wichtig ist, dass das System die gleiche Architektur (i386, amd64) aufweist wie das System, auf dem den die verschlüsselten Verzeichnisse angelegt wurden.
Hinweis:
Auch wenn die ecryptfs-Verschlüsselung mit einer älteren Ubuntuversion erfolgte, lässt sich ecryptfs-recover-private
anwenden. Entscheidend ist, dass das funktionierende System bzw. die Live-CD den Befehl ecryptfs-recover-private
bereitstellt.
In einem Terminal gibt man nun
sudo ecryptfs-recover-private
ein. Der Befehl durchsucht alle eingebundenen Partitionen nach Ordnern, die mit ecryptfs verschlüsselt wurden. Die Ausgabe sieht beispielsweise so aus:
INFO: Searching for encrypted private directories (this might take a while)... INFO: Found [/home/.ecryptfs/BENUTZERNAME/.Private]. Try to recover this directory? [Y/n]:
Standardmäßig wird das Verzeichnis nur für den Lesezugriff, also ohne Schreibzugriff, eingehängt. Will man es bearbeiten, muss man dem obigen Befehl die Option --rw
hinzufügen.
sudo ecryptfs-recover-private --rw
Gibt es mehrere verschlüsselte Benutzerverzeichnisse, werden diese der Reihe nach abgefragt. Bestätigt man die Wiederherstellung, muss man das Login Passwort von BENUTZERNAME eingeben.
Nach Eingabe des Passwortes wird das Verzeichnis von BENUTZERNAME automatisch entschlüsselt und eingebunden. Der Ort wird im Terminal angegeben, in der Regel wird dabei ein Ordner unter /tmp erstellt. Nun kann man mit jedem Dateibrowser auf die Dateien zugreifen. Man hat jedoch nur Lese- keinen Schreibzugriff. Will man die Daten verändern, muss man also zunächst eine Kopie anlegen.
Sollte der Zugriff auf die Dateien verweigert werden, liegt das wahrscheinlich an entsprechend gesetzten Zugriffsrechten [2]. In dem Fall hilft ein Dateimanager mit Root-Rechten oder das Kopieren in einem Root-Terminal.
Vorbereitungen für die manuelle Datenrettung¶
Wenn das automatische Auslesen mit ecryptfs-recover-private
nicht möglich ist, kann eine manuelle Wiederherstellung und Entschlüsselung der Daten helfen.
Systempfade der Schlüsseldateien¶
Die für die Entschlüsselung erforderlichen Dateien befinden sich in einem für ecryptfs-utils
reservierten Verzeichnis. Die Pfade dorthin unterscheiden sich abhängig von der Variante.
Bei der Variante »privates verschlüsseltes ~/Private
Verzeichnis« liegen die Daten in /home/BENUTZERNAME/.ecryptfs
,
bei der Variante »gesamtes Homeverzeichnis verschüsseln« in /home/.ecryptfs/BENUTZERNAME/.ecryptfs
.
Neben diesem Verzeichnis liegen die verschlüsselten Daten, also in /home/BENUTZERNAME/.Private
für die eine bzw. /home/.ecryptfs/BENUTZERNAME/.Private
für die andere Variante.
Demnach sollte sich bei allen Varianten im Unterverzeichnis .ecryptfs
die folgenden Dateien befinden:
auto-mount (Null-Byte Indikator-Datei) auto-umount (Null-Byte Indikator-Datei) Private.mnt (der relevante mount-point, in der Regel /home/BENUTZERNAME) Private.sig (Hinweis auf Verschlüsselung von Ordnern und Files) wrapped-passphrase (Verschlüsselungspasswort - encryptet) .wrapped-passphrase.recorded (Null-Byte Indikator-Datei)
Daten einbinden¶
Man startet mit einer Live-CD (-DVD) bzw. Live-USB-Stick ein Ubuntu mit der gleichen Architektur und öffnet am Live-Desktop ein Terminal [1] und bindet das "beschädigte" System in das Ubuntu-Live-System ein.
Handelt es sich dabei um ein Software-RAID, LVM oder anderes System, so sind entsprechende Maßnahmen vorab im Live-System zu ergreifen. Nachfolgend die Partitions-Bezeichnungen verwenden, wie diese im Terminal mit
sudo blkid
angezeigt werden.
Integriertes Homeverzeichnis¶
Befindet sich das Verzeichnis /home/BENUTZERNAME auf der selben Partition wie das Wurzelverzeichnis (nachfolgend wird als Beispiel /dev/sda1 für das Wurzelverzeichnis angenommen), dann gibt man ein:
sudo mount /dev/sda1 /mnt
Separates Homeverzeichnis¶
Befindet sich das Verzeichnis /BENUTZERNAME auf einer vom Wurzelverzeichnis getrennten Partition (als Beispiel Wurzelverzeichnis = /dev/sda1, home = /dev/sda5 ), so muss das System beginnend mit root ( / ) in der richtigen Reihenfolge vorab aufgebaut werden.
sudo mount /dev/sda1 /mnt sudo mount /dev/sda5 /mnt/home
Sollten noch andere Verzeichnisse (siehe /etc/fstab) erforderlich sein, so sind auch diese einzubinden. Nun sollte man schon einmal überprüfen, ob man auf die (noch verschlüsselten) Daten als solche bzw. Schlüsseldateien schon zugreifen kann.
Falls man sich die Basisdaten zur Verschlüsselung nicht notiert hatte, sollte man diese jetzt erst einmal auslesen!
wrapped-passphrase auslesen¶
Zur Prüfung, ob die Passphrase (nicht das Login-Passwort) stimmt und dieses unbeschädigt ist, kann man sich diese mit dem Befehl
ecryptfs-unwrap-passphrase
im Terminal [1] anzeigen lassen. Sie ist für gewöhnlich mit dem Login-Passwort verschlüsselt und befindet sich in der Datei wrapped-passphrase
im entsprechenden .ecryptfs
Verzeichnis. (siehe Systempfade).
ecryptfs-unwrap-passphrase .ecryptfs/wrapped-passphrase
Nach der Eingabe des Login-passwortes wird die Passphrase angezeigt.
Daten manuell auslesen¶
Die Partition(en), auf denen die Daten zum Auslesen liegen, sollten gemäß der Beschreibung Daten einbinden fürs Live-System verfügbar gemacht werden.
Lesender Datenzugriff¶
Man erstellt im Live-System einen Benutzer mit dem identischen Benutzernamen (optional mit UserID) und Login-Passwort, wie dieses für die zu lesenden Daten vorgegeben ist mit:
Hinweis:
Bei der Abfrage wird das Login-Passwort als "UNIX-Passwort" bezeichnet, die Eingabe erfolgt blind, es erfolgt keine Anzeige bei der Eingabe!
ubuntu@ubuntu:~$ sudo adduser --encrypt-home [--uid xxxx] BENUTZERNAME .... Geben Sie ein neues UNIX-Passwort ein: Geben Sie ein neues UNIX-Passwort erneut ein: ... # Eingabe zu Name etc. kann vernachlässigt werden
Anschließend fügt man den Benutzer noch der Gruppe sudo hinzu:
ubuntu@ubuntu:~$ sudo adduser BENUTZERNAME sudo
Nun stellt man den Zugriff auf die oben eingebundenen, verschlüsselten Daten für das Livesystem her:
ubuntu@ubuntu:~$ sudo mount -o bind /mnt/home/.ecryptfs /home/.ecryptfs
Man meldet sich nun aus dem "Ubuntu-Livesystem" ab und mit dem <Benutzername> am Login wieder an. Damit sollten die Daten wieder im Klartext lesbar sein. Nach Abschluss der Arbeiten sollte man sich abmelden und das eingehängte System vom Livesystem lösen bzw. das Livesystem herunter fahren.
Datenzugriff mit Bearbeitung¶
Werden über das Auslesen hinaus weitere Schritte erforderlich, sind um die erforderlichen Kernel-Informationen für ecryptfs-utils
vom Ubuntu-Live-System zu erhalten, in das Terminal [1] folgende Eingaben / Schritte erforderlich:
ubuntu@ubuntu:~$ for fs in dev proc sys; do sudo mount --bind /$fs /mnt/$fs; done
Nun wechselt man mit dem Befehl:
ubuntu@ubuntu:~$ sudo chroot /mnt
in das "defekte" System.
Benutzer aktivieren¶
Man wechselt nun den Benutzer - dabei auf das Minus- und die Leer-Zeichen bei der Eingabe achten. Bei der Abfrage zum Passwort ist das <Login-Passwort>
von BENUTZERNAME
einzugeben. Die angezeigten Meldungen können ignoriert werden.
root@ubuntu:~$ su - BENUTZERNAME Passwort: < Login-Passwort von BENUTZERNAME
Verzeichnis aufschließen¶
Mit den nächsten Eingaben schließt man das "verschlüsselte" Verzeichnis auf:
BENUTZERNAME@ubuntu:~$ ecryptfs-add-passphrase --fnek Passphrase: < notierte Passphrase BENUTZERNAME@ubuntu:~$ ecryptfs-mount-private
Jetzt hat man Zugriff auf die Daten, sowohl über den Dateimanager, als auch im Terminal, dazu noch folgende Eingabe
BENUTZERNAME@ubuntu:~$ cd .. BENUTZERNAME@ubuntu:~$ cd BENUTZERNAME
damit die Daten angezeigt, ausgelesen und auch extern gesichert werden können. Will man einen Dateimanager benutzen, dann diesen jetzt aus dem Terminal [1] heraus aufrufen.
Benutzer deaktivieren¶
Um keine Datenverluste zu erleiden, die eingebundenen Verzeichnisse richtig verlassen, dazu im Terminal [1] eingeben:
BENUTZERNAME@ubuntu:~$ ecryptfs-umount-private BENUTZERNAME@ubuntu:~$ exit logout root@ubuntu:~$ exit ubuntu@ubuntu:~$
Achtung!
Ist das Vorstehende nicht ohne Fehlermeldungen auszuführen, so sind aufgrund der Vielzahl der Möglichkeiten tieferes Basiswissen zu Linux und zu den aufgetretenen Fehlern erforderlich, die diese Beschreibung sprengen würde - wobei eine Wiederherstellung nicht grundsätzlich ausgeschlossen wird.
Schlüsseldaten reparieren¶
Wenn man bei einer Prüfung erkennt, dass die Schlüsseldateien nicht mehr brauchbar sind oder gar fehlen, so kann man dieses "reparieren".
Überprüfung der Schlüsseldateien¶
Dies setzt allerdings voraus, dass die Datei wrapped-passphrase entweder intakt ist und vorab ausgelesen werden konnte, eine Kopie von ihr existiert und das Passwort, mit dem das Verzeichnis ~/Private bzw. das Home-Verzeichnis verschlüsselt wurde, bekannt sind. Ist das nicht der Fall, ist eine Wiederherstellung der Daten nicht möglich. Die verschlüsselten Verzeichnisse können in diesem Fall nicht mehr entschlüsselt werden!
Reparatur vorbereiten¶
Man ruft ein Terminal auf, bindet zuerst wie unter Daten einbinden beschrieben, die Partition(en) ein und wechselt mit:
ubuntu@ubuntu:~$ sudo chroot /mnt ubuntu@ubuntu:~$ su - BENUTZERNAME Passwort: < Login-Passwort von BENUTZERNAME BENUTZERNAME@ubuntu:~$ cd /mnt/home/.ecryptfs/BENUTZERNAME/.ecryptfs BENUTZERNAME@ubuntu: /mnt/home/.ecryptfs/BENUTZERNAME/.ecryptfs>$
in das System vom "alten" Benutzer.
Hinweis:
Man sollte das Terminal solange nicht verlassen, bis alle Dateien angelegt wurden. Mit dieser Maßnahme werden bei der Erstellung die Rechte [3] und Benutzer-ID gleich richtig mit angelegt.
Obige Pfadangabe ist gemäß dem aktuellen Pfad zu den Schlüsseldateien anzupassen. Nachfolgend wird auf die "beispielhafte" Pfadangabe der Terminal-Zeile mit
BENUTZERNAME@ubuntu: /mnt/home/.ecryptfs/BENUTZERNAME/.ecryptfs>$
verzichtet und nur noch auf die Befehle an diesem Prompt eingegangen.
wrapped-passphrase erstellen¶
Ist das Verschlüsselungspasswort unbekannt, kann es (wie oben unter Passphrase auslesen beschrieben) aus einer intakten wrapped-passphrase-Datei ausgelesen werden. Nachdem es bekannt ist, kann die Datei wie folgt im Terminal [1] neu erstellt werden:
ecryptfs-wrap-passphrase wrapped-passphrase
Die nachfolgenden Abfragen sind wie folgt zu beantworten (es erfolgt keine Anzeige, blinde Eingabe erforderlich):
Passphrase to wrap: < Eingabe notierte Passphrase Wrapping passphrase: < Eingabe Login-Passwort von BENUTZERNAME
und die erforderlichen Zugriffs-Rechte [3] dieser Datei einschränken mit:
chmod 700 wrapped-passphrase
auto-mount erstellen¶
Man erstellt im Terminal [1] die leere Datei auto-mount mit folgendem Befehl:
touch auto-mount
auto-umount erstellen¶
Man erstellt im Terminal [1] die leere Datei auto-umount mit folgendem Befehl :
touch auto-umount
Private.mnt erstellen¶
Man erstellt im Terminal [1] die Datei Private.mnt mit folgendem Befehl
für das Verzeichnis ~/Private
echo /home/BENUTZERNAME/Private > Private.mnt
für ein gesamtes Homeverzeichnis
echo /home/BENUTZERNAME > Private.mnt
Danach die Zugriffs-Rechte [3] dieser Datei einschränken mit:
chmod 700 Private.mnt
Hinweis:
Wie man erkennen kann, kann man den Pfad, wohin die eigentlichen Daten aus dem Verzeichnis .Private eingebunden werden sollen, seinen Bedürfnissen anpassen - als Beispiel für einzelnes Ziel-Verzeichnis
/home/BENUTZERNAME/Dokumente/Geheim
Private.sig erstellen¶
Um die Basisdaten für diese Datei zu erhalten, gibt man in das Terminal [1] ein:
ecryptfs-add-passphrase --fnek Passphrase: < Eingabe notierte Passphrase
und erhält nun u.a. folgende Zeilen (hier beispielhaftes Ergebnis):
Inserted auth tok with sig [14140887552e0bec] into the user session keyring Inserted auth tok with sig [de5d090606c60111] into the user session keyring
Man erstellt die Datei Private.sig, indem man die eigenen Schlüsselwerte zwischen den [ ] zeilenweise überträgt mit:
echo 14140887552e0bec > Private.sig echo de5d090606c60111 >> Private.sig
Bei der zweiten Zeile das doppelte ">>" beachten und danach die Rechte [3] einschränken mit:
chmod 700 Private.sig
Um keine Datenverluste zu erleiden, nun im Terminal noch eingeben:
exit logout ubuntu@ubuntu:~$
Man sollte diese Daten / Dateien jetzt auch extern sichern, bevor man die Mount-Punkte wieder auflöst und versucht, das System erneut zu starten.
Links¶
Archiv/ecryptfs Das Homeverzeichnis bzw. ein Verzeichnis darin verschlüsseln
Einrichten - wie man eine Verschlüsselung installiert / entfernt
Nutzung - wie man seine Daten bearbeiten und nutzen kann
Wechsel-Login-Passwort - dieser Abschnitt dient zur Problembehebung bei Passwortänderungen
gddrescue - Datenrettung von defekten Datenträgern (z.B. CD-ROM, Disketten etc.)