Warum findet photorec immer wieder Dateien, nachdem ich den freien Speicherplatz als Root ausgefüllt habe?

7

Bevor ich meinen Laptop für eine Weile meinem jungen und Linux-versierten Neffen leihe, möchte ich sicherstellen, dass er nicht in der Lage ist, meine persönlichen Daten in die Leerstelle des Laufwerks zu integrieren. Ich habe die Leerstelle im Laufwerk mehrmals mit gesättigt

sudo cat /dev/urandom > some-file

Beachten Sie die Verwendung von sudo, damit der reservierte Leerraum von 5% ignoriert wird und die Datei wächst, bis ein Fehler auftritt.

Ich führe jedoch photorec in dieser Partition aus und dann entstehen Hunderte alter Dateien. Also, zumindest aus Neugier, wo werden diese Dateien gespeichert und warum überschreibt das zufällige Rauschen sie nicht?

(Die einzige Erklärung, die ich bisher habe, ist, dass sie sich möglicherweise im leeren Bereich zwischen dem Ende einer Datei und dem Ende des Sektors befinden, der sie enthält. Könnte das sein?)

Mephisto
quelle
@ JeffSchaller danke, zumindest bin ich nicht allein, ich fühle mich besser ;-)
Frostschutz
Ich wollte mich nur auf den Kern der Frage konzentrieren ...
Jeff Schaller
1
@ JeffSchaller Es öffnet die Datei nicht als Superuser, sondern schreibt als Superuser darauf .
Onkel Billy
@Mephisto Einige Dateisysteme speichern den Inhalt kleiner Dateien und Verzeichnisse direkt im freien Speicherplatz des Inodes. Zumindest war das mein Eindruck - ich muss
Onkel Billy
Zu beachten ist, dass photorecmöglicherweise viele alte Dateien basierend auf Metadaten gefunden werden, diese jedoch nicht vollständig wiederhergestellt werden können. Nicht erfolgreich wiederhergestellte Dateien sind nur Mülldaten oder nur Dateiblöcke.
Robert Riedl

Antworten:

16

Hier kann es zu mehreren Missverständnissen kommen, sodass der Befehl nicht das tut, was Sie vielleicht erwarten.

sudoist überflüssig, da Sie nicht sudolesen müssen /dev/urandom. Das > some-fileTeil ist eine Shell-Umleitung und wird daher überhaupt nicht abgedeckt sudo. Ihr sudoist also super ineffektiv. ( Hinweis: In diesem speziellen Fall sudofunktioniert es möglicherweise wie beabsichtigt, siehe Kommentare. Die Nichtverwendung auf sudodiese Weise ist jedoch ein Muster, da es Sie in anderen Fällen beißt.)

Dann schreiben Sie in eine reguläre Datei. Das füllt den freien Speicherplatz des Dateisystems aus, auf dem sich die Datei gerade befindet. Wenn Sie über mehrere Dateisysteme verfügen (eines für /, eines für /home, Boot- und Swap-Partitionen usw.), sind diese ebenfalls nicht betroffen.

Bestenfalls überschreibt dies nur den freien Speicherplatz . Es gibt keine Garantie dafür, dass alles abgedeckt wird (abhängig von internen Dateisystemen, Stammreserven, Journalen, ansonsten gepackten / reservierten / usw. Sektoren), und es werden keine Dateien überschrieben, die noch regelmäßig vorhanden sind (und diese können versteckte Dateien enthalten in Papierkorb- / Miniaturbild- / Cache-Ordnern oder in einem Unterverzeichnis, das Sie vergessen haben).

All dies wird immer noch von abgeholt, photorecda es nie überschrieben wird.

Darüber hinaus muss zuerst das Schreiben dieser Datei abgeschlossen werden. Anstatt es direkt danach zu löschen, müssten Sie synczuerst sicherstellen, dass alle zufälligen Daten tatsächlich auf die Festplatte gelangen und nicht nur ein RAM-Schreibpuffer, der nie geschrieben wird.

Bei dieser Methode gibt es also keine Garantie für irgendetwas. Gleichzeitig ist dies gefährlich, da dem Dateisystem der freie Speicherplatz ausgeht, was wiederum zu Schreibfehlern bei allen anderen Programmen führen und somit zu einem unbeabsichtigten Datenverlust führen kann.

Frostschutz
quelle
4
Das sudo ist da, um sicherzustellen, dass auf den reservierten Speicherplatz von 5% (oder eine ähnliche Menge) geschrieben wird. Andernfalls wird das Schreiben gleichzeitig beendet, wenn die normalen Benutzerdateibrowser 0 Byte melden. Mit sudo werden mehr oder weniger zusätzliche 50 GB geschrieben. Fragen Sie mich nicht warum.
Mephisto
@Mephisto Ich gebe zu, dass ich es nicht getestet habe (schwierig für mich, da sudo hier nicht installiert ist), daher könnte ich mich irren, und nur die Shell-Umleitung ist ein Problem, wenn versucht wird, in eine Datei zu schreiben, die bereits root gehört (keine Berechtigung) zu öffnen / anhängen, wie es die Shell tut, bevor sudo ausgeführt wird).
Frostschutz
4
Ich bestätige, wir haben uns geirrt, dass der reservierte Speicherplatz nicht voll ist: Was zählt, ist die EUID der Datei, die das Schreiben ausführt, nicht das Eigentum an der Datei. Rückblickend ist dies sinnvoll. Die Einschränkung funktioniert so, dass der Kernel beim writeAufruf ENOSPC zurückgibt und die Ausnahme davon abhängt , wer angerufen hat write.
Gilles 'SO - hör auf böse zu sein'
1
Vielen Dank für die Bestätigung. Ich würde immer noch behaupten, dass es ein schlechter Stil ist, sudodiese Methode zu verwenden, da sie die falsche Vorstellung davon vermittelt, wie sudonormalerweise beim Schreiben in Dateien funktioniert. (Ich würde auch argumentieren, dass das Schreiben von zufälligen Daten besser ist als das Schreiben von Null. Sie wissen nie, ob das Dateisystem oder das Speichergerät Daten komprimiert /
dedupliziert
1
@larsks: Das Öffnen der Datei erfolgt als ursprüngliche Benutzer-ID (und erhält daher die Benutzer-ID als Eigentümer). Das Schreiben der Datei (dh write(2)) erfolgt als root, und wie Gilles betont, wird dadurch tatsächlich die Einschränkung des reservierten Speicherplatzes vermieden.
Nate Eldredge
9

Wie Sie alle Daten entfernen, die Ihr Neffe nicht sehen sollte

Ich denke, es gibt nur einen Weg, der wahrscheinlich alle Speicherorte überschreibt, an denen möglicherweise "gelöschte" Daten verbleiben.

  • Sichern Sie Ihr System (eine vollständige Sicherung). Eine Alternative besteht darin, mit Clonezilla ein geklontes Bild zu erstellen.

  • Wischen Sie das gesamte Laufwerk ab (unter der Annahme eines Laufwerks). Bei einer Festplatte oder SSD gibt es spezielle Tools / Methoden, die auf niedriger Ebene arbeiten (Änderung der Zuordnung zwischen logischen und physischen Speicherorten) und die viel schneller sind als beispielsweise das ddÜberschreiben mit Nullen. Sie können häufig über auf solche Tools (in die Laufwerke integriert) zugreifen hdparm.

  • Machen Sie eine Neuinstallation und übergeben Sie den Computer dem jungen und Linux-versierten Neffen.

Der einfache Weg

Wenn Sie es sich leisten können, ziehen Sie den Stecker aus der Steckdose und ersetzen Sie es durch ein neues Laufwerk. Lass deinen Neffen seine Lieblings-Linux-Distribution installieren :-)

Sudodus
quelle
4

Versuchen Sie, das Tool sfill (Secure Fill) zum sicheren Löschen zu verwenden.

sudo apt-get install secure-delete

(von /superuser/19326/how-to-wipe-free-disk-space-in-linux )

L. Scott Johnson
quelle
2
Dies beantwortet nicht die Frage, warum.
Gilles 'SO - hör auf böse zu sein'
Aber dieses Ding wird laut man sfill viele Durchgänge von Nullen, Rauschen und speziellen Werten machen. Dies überschreibt den gleichen Bereich, den ich mit einem Durchgang (derzeit 4) überschreibe. Diese Dateien müssen an einem anderen Ort gespeichert werden.
Mephisto
2
Nun, ich würde sagen, es überschreibt den Bereich, den Sie überschreiben möchten, aber nicht ganz erfolgreich überschreiben.
L. Scott Johnson
@ Gilles, da dies eine XY-Frage / ein XY-Problem ist, denke ich, dass es immer noch eine gute Antwort ist.
Robert Riedl