Wie löscht iOS eine Datei technisch und kann sie möglicherweise nicht gelöscht werden?

11

Wir haben hier eine interessante Diskussion über das Löschen von Dateien auf iOS-Geräten. Die Frage war: Wenn ich eine Datei mit NSFileManager lösche, was passiert dann unter der Haube?

Nach meinem Verständnis erfolgt das Löschen durch Entfernen des entsprechenden Dateieintrags aus der Dateisystemtabelle.

Das Gegenargument ist, dass ein Dateihandle in irgendeiner Weise erhalten bleibt und nur ein Flag gesetzt wird, das die Datei als gelöscht markiert. Wenn der Benutzer Root-Zugriff auf das iOS-Gerät hatte, konnte er dieses Flag möglicherweise zurücksetzen und den Dateiinhalt wiederherstellen.

In beiden Fällen stimmen wir zu, dass der eigentliche Dateiinhalt nicht überschrieben wird und die einfachen Bytes noch auf dem Flash-Speicher / der Flash-Festplatte vorhanden sind, bis der Block von einer anderen Datei belegt wird.

Die Idee ist jetzt: Wenn die zweite Version wahr ist, können wir die Datei vor dem Löschen mit einem 1-Byte-Inhalt überschreiben (selbst wenn dieses Byte an einen neuen Speicherort auf dem Flash-Laufwerk geschrieben wird, ohne den alten Inhalt tatsächlich zu überschreiben). Wenn die Datei dann wiederhergestellt wird, ist nur der überschriebene 1-Byte-Inhalt verfügbar.

Beachten Sie, dass es sich nicht um eine forensische Analyse des Flash-Laufwerks handelt, mit der möglicherweise der ursprüngliche Dateiinhalt wiederhergestellt werden könnte.

Um es noch einmal zusammenzufassen:

  • Wie funktioniert das Löschen einer Datei unter iOS intern?
  • Verhindert der Überschreibungsansatz das Löschen?
Krumelur
quelle

Antworten:

3

Ich glaube an Unix wird das Dateisystem wie von Ihnen vorgeschlagen geändert (der Eintrag wird aus der Dateisystemtabelle entfernt). Unter Windows wird die Dateisystemtabelle geändert und die Datei wird nur als gelöscht markiert. Datenwiederherstellungstools können die Datei wiederherstellen. Nachdem ich mir Windows-Anwendungen zum Wiederherstellen von Dateien angesehen habe, wurde meiner Meinung nach auch der Dateiname geändert. Wenn Sie also wiederherstellen, müssen Sie den richtigen Dateinamen angeben. Das Ändern des Dateinamens würde bedeuten, dass das Betriebssystem nicht zwei Dateien mit demselben Namen abgleichen müsste, wenn Sie eine Datei mit demselben Namen wie die gerade gelöschte erstellen würden.

MacOSX und Windows haben einen Papierkorb (Papierkorb), in dem meiner Meinung nach ein spezieller Ordner implementiert ist, in den die gelöschten Dateien kopiert werden. Wenn Sie den Papierkorb leeren, wird dieser Ordner gelöscht, indem Sie die Systemdateitabelle ändern. Wenn Sie NSFileManager verwenden, wird der Papierkorb umgangen (der unter iOS ohnehin nicht vorhanden ist), sodass es sich um einen echten Löschvorgang handelt. Ebenso, wenn Sie aus einem Terminalfenster "rm".

Wenn Sie eine neue Datei mit demselben Namen wie die alte erstellen, ist dies unter Unix nur ein neuer Eintrag in der Systemdateitabelle. Da der alte Eintrag jedoch aus der Tabelle entfernt wurde, hat das Erstellen der Datei keinen Vorteil neuer Eintrag.

Das ist meine Überzeugung und ich bin bereit für den Ansturm von Abstimmungen ;-)

Derek Knight
quelle
Sie haben definitiv Recht mit dem Papierkorb unter OS X. Es ist nur ein spezieller Ordner, sonst nichts. Und Sie können es tatsächlich als Ordner unter Ihrem Home-Verzeichnis sehen, wenn Sie Ihre unsichtbaren Dateien sichtbar machen.
Kann Sürmeli