wiki:linux/Filesystem/dd/Festplatte (HDD) sicher löschen

LVM, autofs, blkid, dd, dd/Festplatte (HDD) sicher löschen, df, du, fdisk, findmnt, ls, lsblk, mount, rm, wipefs


Nachdem auf einer Solid State Drive (SSD) Daten im sogenannten Reservespeicher nur über den Controller zugänglich sind, ist hier ein sicheres Löschen mit nachfolgender Methode nicht gewährleistet. Mehr Informationen dazu siehe unter Wikipedia: Solid-State-Drive oder dem heiseSecurity-Artikel: Viele SSDs und USB-Sticks lassen sich nicht sicher löschen. Eine Möglichkeit, SSD's sicher zu löschen wird im c't-Artikel: SSD komplett löschen beschrieben.

Es gibt ja einige Tools, die eine Festplatte mehrmals mit zufälligen Mustern beschreiben, um diese sicher zu löschen.
Letztlich genügt es aber, eine HDD komplett mit Nullen (Null-Bytes) zu beschreiben. Danach gibt es auch für Experten kaum eine Möglichkeit, die überschriebenen Daten zu rekonstruieren.
Falls Du nicht weißt, unter welcher device-Kennung Deine Festplatte vom System geführt wird, kannst Du das in einer Rootshell? über

blkid

oder etwas ausführlicher (ebenfalls als root) über

fdisk -l

auslesen lassen.
Eine ‘blkid’-Ausgabe kann z. B. so aussehen:

/dev/sda1: UUID="34887cbe-e7a0-443b-bf8b-907da5cd4d81" TYPE="ext4"
/dev/sda2: UUID="ae046db1-036b-43b4-bc64-8132317a9da5" TYPE="crypto_LUKS"
/dev/sda3: UUID="c797a953-2e6f-4cea-a7c4-a22950cc223f" TYPE="swap"

In diesem Fall wurde die Festplatte '/dev/sda', die über 3 Partitionen (sda1, sda2, sda3) verfügt, erkannt.
Das folgende Beispiel geht davon aus, dass die komplette Festplatte '/dev/sda' gelöscht werden soll. Möchtest Du nur eine bestimmte Partition löschen, verwendest Du das entsprechende device, z. B. ‘/dev/sda2′.

Vorsicht: Der folgende Befehl startet ohne jegliche Sicherheitsabfrage.
Sei Dir also absolut sicher, dass Du die richtige Festplatte angibst!

dd if=/dev/zero of=/dev/sda

'/dev/zero' ist eigentlich kein device im herkömmlichen Sinne. Vielmehr handelt es sich um eine Routine, die endlos Nullbytes ausgibt. Daneben existiert noch '/dev/urandom' das zufällige Byte-Muster liefert. Über den ‘if’-Parameter (input file) wird hier also eine endlose Zahl an Nullen als Quelle angegeben. Diese Nullen schreibt 'dd' dann in die Datei, die über den 'of'-Parameter (output file) übergeben wird. Und nachdem unter Linux alles eine Datei ist, kann das eben auch eine Festplatte ('/dev/sda') sein.

Ab jetzt braucht es Geduld, je nach Größe der Festplatte kann der komplette Vorgang mehrere Stunden beanspruchen.

Nun ist dd? ein eher schweigsamer Befehl und informiert Dich nicht so ohne weiteres über den Fortschritt.
Wenn Du trotzdem hin und wieder erfahren möchtest, wie weit der Löschvorgang schon vorangegangen ist, geht das folgendermaßen:
Öffne ein zweites Terminal und schaue, unter welcher Prozess-ID (pid) dd? gerade ausgeführt wird. Mit folgendem Befehl ist das möglich:

ps -a

Eine Ausgabe sieht ungefähr so aus:

  PID TTY          TIME CMD
13844 pts/0    00:00:01 dd
13928 pts/1    00:00:00 ps

In diesem Fall läuft dd? als Prozess mit der ID 13844. Wenn Du nun ein 'USR1'-Signal an diesen Prozess sendest, reagiert dd? darauf mit einer Statusmeldung (die natürlich im Terminal, in dem dd? arbeitet, erscheint). Setze also folgendes Kommando ab:

kill -USR1 13844



Weiterführendes zum Thema:

Winfried Müller: Festplatten wirklich löschen
c’t-Artikel: Einmal überschreiben genügt
Wikipedia: Eraser-Software
ubuntuusers Wiki: dd

Last modified 5 years ago Last modified on Dec 8, 2014, 6:02:26 PM