Was macht der Befehl „fsutil file createnew“ eigentlich?

Was macht der Befehl „fsutil file createnew“ eigentlich?

Wenn ich in der Befehlszeile des Windows-Betriebssystems schnell eine Datei beliebiger Größe erstellen muss, verwende ich den folgenden Befehl:

fsutil file createnew <filename> <size_in_bytes>

Ich habe vor Kurzem mit diesem nativen Tool eine 100 GB große Datei erstellt und war überrascht, dass die Erstellung der Datei weniger als 500 ms dauerte. Ich habe die Datei auf einer plattenbasierten Festplatte erstellt, die zuvor mit Daten gefüllt war.

Aus Neugier öffnete ich die Datei in einem Hex-Editor und sie schien völlig leer zu sein (zugegebenermaßen habe ich nicht alle 100 GB manuell überprüft). Ich hatte erwartet, dass sie mit dem vorherigen Inhalt der Festplatte gefüllt wäre, da es unmöglich ist, dass 100 GB Daten in 500 ms geschrieben wurden.

Was fsutil file createnewtut es eigentlich? Und kann es, abhängig davon, was es tatsächlich tut, als Schnelllöschtechnik mit geringer Sicherheit (Single-Pass) verwendet werden?

Antwort1

Ich hatte erwartet, dass es mit dem vorherigen Inhalt der Festplatte gefüllt wird,

Bei Mehrbenutzer-Betriebssystemen ist dies im Allgemeinen nicht möglich, da dies eine unnötig einfache Möglichkeit wäre, die Dateischutzfunktionen auf Betriebssystemebene zu umgehen. Zumindest für Windows ist dies ausdrücklichTeil seiner Sicherheitszertifizierung.

Was macht fsutil file createnew eigentlich?

Es gibt mindestens zwei Optionen. Ich vermute (habe es aber nicht überprüft), dass fsutil die erste verwendet – es verlässt sich darauf, dass das Betriebssystem das „Ende der Daten“ im Auge behält.

  • Das Dateisystem kann zwei separate Zeiger speichern – das „Dateiende“ und das „Ende gültiger Daten“. So funktioniert NTFS in Windows.

    Du kannst anrufenSetEndOfFile()(entspricht Linuxftruncate()), um eine große Datei ohne Daten zu erstellen, und das Leerzeichen zwischen „Ende der gültigen Daten“ und „Ende der Datei“ gibt beim Lesen automatisch alle 0x00-Bytes zurück.

    (Privilegierte Konten können den Aufruf SetFileValidData() tatsächlich verwenden, um das Betriebssystem zu zwingen, Daten zurückzugeben, die sich bereits auf der Festplatte befinden, aber dies ist keine häufig verwendete Operation.)

  • Wenn das Dateisystem auf Extents basiert, werden nicht einzelne Festplattencluster, sondern ganze zusammenhängende Start-End-Bereiche, aus denen die Datei besteht, verfolgt. Dies ermöglicht die ErstellungSparse-Dateien, in dem einige Bereiche einfach so markiert sind, dass sie überhaupt keine physische Zuordnung aufweisen (d. h. es handelt sich um „Löcher“). Diese Speicherorte geben beim Lesen 0x00 zurück (bis dort natürlich etwas anderes geschrieben wird).

    Im Allgemeinen einfachSucheüber das Dateiende hinaus und das Fortsetzen des Schreibens führt (sofern möglich) automatisch zu einer Sparse-Datei.

fsutil verfügt über Unterbefehle, um sowohl den Zeiger „gültige Daten“ als auch die Extent-Liste einer Datei zu überprüfen.

Es gibt Dateisysteme, die diese Techniken nicht unterstützen (z. B. FAT). In diesem FallWilleSie müssen den entsprechenden Festplattenbereich explizit auf Null setzen.

Und kann es, abhängig davon, was es tatsächlich tut, als Schnelllöschtechnik mit geringer Sicherheit (Single-Pass) verwendet werden?

Nein, nicht auf mechanischen Datenträgern.

verwandte Informationen