Kann eine Datei anscheinend geändert werden, bevor sie erstellt wurde?

8297
AlexanderRD

Ist es möglich, eine Datei zu haben, deren Änderungsdatum vor ihrem Erstellungsdatum liegt? Durch welche Aktionen würde dieses Ereignis eintreten?

8
Erstellen Sie die Datei. Dreh die Uhr zurück. Ändern Sie die Datei. Stellen Sie die Uhr wieder zurück. DavidPostill vor 7 Jahren 7
@DavidPostill Beachten Sie, dass für das Ändern der Systemzeit zumindest unter Windows Administratorrechte erforderlich sind, während es andere Möglichkeiten gibt, lustige Dateizeiten zu erstellen, bei denen dies nicht der Fall ist. Ben N vor 7 Jahren 0

6 Antworten auf die Frage

8
Lekensteyn

Betrachten Sie ein .tar-Archiv, das extrahiert wird. In der Regel wird den extrahierten Dateien ein Zeitstempel für die letzte Änderung aus den Archivinhalten zugewiesen (der normalerweise in der Vergangenheit liegt, sofern Sie kein Zeitreisender sind). In Bezug auf das Dateisystem wurden diese Dateien jedoch gerade erstellt.

Es gibt auch Dienstprogramme, um die Änderungszeit vorhandener Dateien zu ändern. Unter Linux ist dies beispielsweise der Befehl touch .

Und für eine einzelne Datei, `cp -p` und Dinge, die sie imitieren, wie` rcp -p` und `scp -p` sowie` rsync` mit `-t` oder` -a`, nimmt die Modtime die Zeit die Quelle. dave_thompson_085 vor 7 Jahren 0
"Erstellungszeit" ist ein Windows-Begriff und kein * nix-Begriff. * nix hat "Änderungszeit", was leicht mit "Erstellungszeit" zu verwechseln ist, aber nicht dasselbe. plugwash vor 7 Jahren 0
Ext4 speichert anscheinend eine "Geburtszeit", die der "Erstellungszeit" des Fensters ähnelt (aber nicht dasselbe ist), aber es gibt keine gute Möglichkeit, darauf zuzugreifen. http://unix.stackexchange.com/a/50184/122182 plugwash vor 7 Jahren 0
7
Ben N

Unter Windows ist es sehr einfach, die erstellten und geänderten Zeiten einer Datei festzulegen (zu verfälschen, wenn Sie möchten). Sie müssen die Uhr des Computers nicht ändern. Sie benötigen nicht einmal einen 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 den Zeitpunkt der letzten Änderung 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 mit der -dMarkierung von ändern touch, wie in dieser Antwort von Ask Ubuntu gezeigt . Es ist nicht wirklich von einem Erstellungsdatum für Dateien auf Linux-Dateisystemen ( weiterführende Lektüre unter Unix & Linux ) die Rede .

4
Ro-ee

Wenn Sie eine Datei von Grund auf erstellen, wird die Erstellungszeit "Jetzt" und das Änderungsdatum "Jetzt" angezeigt. Stellen Sie sich nun vor, diese Datei auf ein anderes Laufwerk zu kopieren. Windows behält die Änderungszeit bei, aber der Erstellungszeitpunkt dieser Datei wird auf den Zeitpunkt gesetzt, 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:

  • Der letzte Zeitpunkt, zu dem der Inhalt der Datei geändert wurde, wird in der Änderungszeit gespeichert.
  • Die Uhrzeit, zu der die Datei auf diesem Laufwerk erstellt wurde, wird in der Erstellungszeit gespeichert.
3
David

Ja. Ändern Sie unter Windows die Datei und speichern Sie sie. Kopieren Sie jetzt die Datei. Wenn Sie sich die Eigenschaften der Kopie ansehen, werden Sie feststellen, dass sie ein früheres Änderungsdatum hat.

1
Bob

Das Wichtigste dabei ist, dass die Änderungszeit von Dateien nicht wirklich besonders ist - sie wird genauso wie andere Daten gespeichert. Es gibt keine Möglichkeit festzustellen, wann tatsächlich zum letzten Mal Daten geschrieben oder gelesen wurden.

Von hier aus können wir sehen, dass es immer möglich ist (mit Ausnahme von einmal beschreibbaren Medien wie einer CD), die Bits auf einem Laufwerk direkt zu ändern, die den letzten Änderungszeitpunkt oder sogar den Erstellungszeitpunkt speichern.

Praktisch ist dies auch aus gängigen Betriebssystemen möglich, wie andere Antworten bereits festgestellt haben. In Windows wird dies von der WinAPI- SetFileTimeFunktion bereitgestellt. Dies ist unter utimeLinux möglich. Tools wie touchdiese APIs bauen auf.

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

0
Tai Paul

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

  1. Nicht alle Computer sind so konfiguriert, dass sie automatisch auf Sommerzeit umstellen.
  2. Menschen haben die Systemzeit auf einem Computer "versehentlich" geändert.
  3. Die Leute haben die Systemzeit auf einem Computer "absichtlich" aus Spaß geändert.