Kann eine Datei scheinbar geändert werden, bevor sie erstellt wurde? [Duplikat]

9

Ist es möglich, eine Datei zu haben, deren Änderungsdatum vor dem Erstellungsdatum liegt? Welche Aktionen würden dieses Ereignis verursachen?

AlexanderRD
quelle
7
Erstellen Sie die Datei. Dreh die Uhr zurück. Ändern Sie die Datei. Stellen Sie die Uhr wieder zurück.
DavidPostill
@DavidPostill Beachten Sie, dass zumindest unter Windows das Ändern der Systemzeit Administratorrechte erfordert, während es andere Möglichkeiten gibt, lustige Dateizeiten zu erstellen, die dies nicht tun.
Ben N

Antworten:

8

Betrachten Sie ein extrahiertes .tar-Archiv. In der Regel wird den extrahierten Dateien ein Zeitstempel für die letzte Änderung aus dem Archivinhalt zugewiesen (was normalerweise in der Vergangenheit liegt, es sei denn, Sie sind Zeitreisender). Was das Dateisystem betrifft, wurden diese Dateien jedoch gerade erstellt.

Es gibt auch Dienstprogramme zum Ändern der Änderungszeit vorhandener Dateien. Unter Linux ist dies beispielsweise der Befehl touch .

Lekensteyn
quelle
Und für eine einzelne Datei cp -pund Dinge, die sie imitieren, wie rcp -pund scp -p, sowie rsyncmit -toder -a, nimmt die Modtime von der Quelle.
dave_thompson_085
"Erstellungszeit" ist ein Windows-Begriff, kein * nix. * nix hat "Änderungszeit", was leicht mit "Erstellungszeit" zu verwechseln ist, aber nicht dasselbe.
Plugwash
ext4 speichert anscheinend eine "Geburtszeit", die der "Erstellungszeit" des Fensters ähnelt (aber nicht mit dieser identisch ist), aber es gibt keine gute Möglichkeit, darauf zuzugreifen. unix.stackexchange.com/a/50184/122182
Plugwash
7

Wenn Sie eine Datei von Grund auf neu erstellen, wird die Erstellungszeit "jetzt" und das Änderungsdatum "jetzt" angezeigt. Stellen Sie sich nun vor, Sie kopieren diese Datei auf ein anderes Laufwerk. Windows behält die Änderungszeit bei, aber die Erstellungszeit dieser Datei wird auf den Zeitpunkt festgelegt, zu dem Sie die Datei auf dieses Laufwerk kopiert haben (dh den Zeitpunkt, zu dem die Datei auf diesem Laufwerk erstellt wurde). So einfach ist das.

Es ist eigentlich richtig:

  • Das letzte Mal, als der Inhalt der Datei geändert wurde, wird in der Änderungszeit gespeichert.
  • Die Zeit, zu der die Datei auf diesem Laufwerk erstellt wurde, wird in der Erstellungszeit gespeichert.
Ro-ee
quelle
7

Unter Windows ist es sehr einfach, die Erstellungs- und Änderungszeiten einer Datei festzulegen (wenn Sie so wollen, zu verfälschen). Sie müssen die Uhr des Computers nicht ändern. Sie benötigen nicht einmal lokalen Administratorzugriff. Sie benötigen lediglich Schreibzugriff auf die betreffende Datei.

So legen Sie die Erstellungszeit einer Datei mit PowerShell fest SetCreationTime:

[System.IO.File]::SetCreationTime("C:\path\to\file.ext", (Get-Date "8/8/2088"))

So stellen Sie die zuletzt geänderte Zeit ein SetLastWriteTime:

[System.IO.File]::SetLastWriteTime("C:\path\to\file.ext", (Get-Date "7/4/1776"))

Unter Linux können Sie die zuletzt geänderte Zeit einer Datei einfach mit dem -dFlag von ändern touch, wie in dieser Antwort von Ubuntu gezeigt . Es gibt eigentlich keine Vorstellung von einem Erstellungsdatum für Dateien auf Linux-Dateisystemen ( weiterführende Literatur unter Unix & Linux ).

Ben N.
quelle
3

Ja. Nehmen Sie unter Windows eine Änderung an der Datei vor und speichern Sie sie. Kopieren Sie nun die Datei. Wenn Sie sich die Eigenschaften der Kopie ansehen, werden Sie feststellen, dass sie ein früheres Änderungsdatum hat.

David
quelle
1

Das Wichtigste dabei ist, dass die Änderungszeit von Dateien nichts Besonderes ist - sie wird wie alle anderen Daten gespeichert. Es ist nicht zu erkennen, wann Daten tatsächlich zuletzt geschrieben oder gelesen wurden.

Von hier aus können wir sehen, dass es immer möglich ist (ausgenommen einmal beschreibbare Medien wie eine CD), die Bits auf einem Laufwerk, auf dem die zuletzt geänderte Zeit oder sogar die Erstellungszeit gespeichert ist, direkt zu ändern.

In der Praxis ist dies auch innerhalb gängiger Betriebssysteme möglich, wie andere Antworten festgestellt haben. Unter Windows wird dies von der WinAPI- SetFileTimeFunktion bereitgestellt , und Sie können dies unter utimeLinux tun . Tools wie touchbauen auf diesen APIs auf.

Die häufigste legitime Verwendung für diese APIs besteht darin, die Änderungszeit beizubehalten, z. B. beim Kopieren von Dateien, Extrahieren aus Archiven usw.

Bob
quelle
0

Nach meiner Erfahrung wurde ein oder mehrere Computer zum Ändern der Datei verwendet, und einer von ihnen hat die falsche Systemzeit. Die drei häufigsten Ursachen dafür, dass die Systemzeit in keiner bestimmten Reihenfolge falsch ist, sind:

  1. Nicht alle Computer sind so konfiguriert, dass automatisch auf Sommerzeit umgestellt wird.
  2. Leute haben "versehentlich" die Systemzeit auf einem Computer geändert.
  3. Die Leute haben "absichtlich" die Systemzeit auf einem Computer als Scherz geändert.
Tai Paul
quelle