Czy plik może wyglądać na zmodyfikowany przed jego utworzeniem? [duplikować]

9

Czy można mieć plik, którego data modyfikacji jest wcześniejsza niż data jego utworzenia? Jakie działania spowodowałyby wystąpienie tego zdarzenia?

AlexanderRD
źródło
7
Utwórz plik. Cofnij zegar. Zmodyfikuj plik. Ponownie odłóż zegar.
DavidPostill
@DavidPostill Pamiętaj, że przynajmniej w systemie Windows zmiana czasu systemowego wymaga uprawnień administratora, a istnieją inne sposoby tworzenia zabawnych czasów plików, które tego nie robią.
Ben N

Odpowiedzi:

8

Rozważ rozpakowane archiwum .tar. Zazwyczaj wyodrębnione pliki będą miały znacznik czasu ostatniej modyfikacji przypisany z zawartości archiwum (co zwykle ma miejsce w przeszłości, chyba że jesteś podróżnikiem w czasie). Jeśli chodzi o system plików, pliki te zostały właśnie utworzone.

Istnieją również narzędzia do zmiany czasu modyfikacji istniejących plików, na przykład w Linuksie jest to polecenie dotykowe .

Lekensteyn
źródło
I dla jednego pliku, cp -pa rzeczy, które imitują go jak rcp -pi scp -p, a także rsyncz -tlub -abierze czasy modyfikacji ze źródła.
dave_thompson_085
„czas utworzenia” to termin systemu Windows, a nie * nix. * nix ma „czas zmiany”, który łatwo pomylić z „czasem tworzenia”, ale nie to samo.
plugwash
ext4 najwyraźniej przechowuje „czas narodzin”, który jest podobny (ale nie taki sam jak) „czas tworzenia” systemu Windows, ale nie ma dobrego sposobu na uzyskanie do niego dostępu. unix.stackexchange.com/a/50184/122182
plugwash
8

Jeśli utworzysz plik od zera, otrzyma on czas utworzenia „teraz” i datę modyfikacji „teraz”. Teraz wyobraź sobie kopiowanie tego pliku na inny dysk. System Windows zachowa czas modyfikacji, ale czas utworzenia tego pliku zostanie ustawiony na czas skopiowania pliku na ten dysk (tj. Czas utworzenia pliku na tym dysku). Proste.

To jest właściwie poprawne:

  • Ostatnia zmiana zawartości pliku jest zapisywana w czasie modyfikacji.
  • Czas utworzenia pliku na tym samym dysku jest przechowywany w czasie tworzenia.
Ro-ee
źródło
Ten komentarz jest najbardziej sensowny, ponieważ pokazuje bardzo prawdopodobny scenariusz, w którym wystąpi rozbieżność daty utworzenia / modyfikacji.
Shukri Adams
7

W systemie Windows bardzo łatwo jest ustawić (sfałszować, jeśli chcesz) czas utworzenia i modyfikacji pliku. Nie musisz zmieniać zegara komputera; nie potrzebujesz nawet dostępu lokalnego administratora. Wszystko czego potrzebujesz to dostęp do zapisu do danego pliku.

Aby ustawić czas tworzenia pliku za pomocą programu PowerShell przy użyciu SetCreationTime:

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

Aby ustawić czas ostatniej modyfikacji za pomocą SetLastWriteTime:

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

W systemie Linux możesz łatwo zmienić czas ostatniej modyfikacji pliku za pomocą -dflagi touch, jak pokazano w odpowiedzi na pytanie Ubuntu . Tak naprawdę nie ma pojęcia daty utworzenia plików w systemach plików Linux ( dalsze czytanie w Unix i Linux ).

Ben N.
źródło
3

Tak. W systemie Windows zmień plik i zapisz go. Teraz skopiuj plik. Patrząc na właściwości kopii, zobaczysz, że ma ona wcześniejszą datę modyfikacji.

David
źródło
1

Najważniejszą rzeczą do odnotowania tutaj jest to, że czas modyfikacji pliku nie jest tak naprawdę szczególny - jest przechowywany tak jak inne dane. Nie sposób powiedzieć, kiedy dane zostały faktycznie ostatni zapisywane lub odczytywane z.

Stąd możemy zobaczyć, że zawsze jest możliwe (z wyjątkiem nośników jednokrotnego zapisu, takich jak CD), aby przejść i bezpośrednio zmodyfikować bity na dysku przechowującym czas ostatniej modyfikacji, a nawet czas utworzenia.

Praktycznie rzecz biorąc, jest to również wykonalne z poziomu wspólnych systemów operacyjnych, jak zauważyły ​​inne odpowiedzi. W systemie Windows jest to zapewniane przez funkcję WinAPI SetFileTimei można to zrobić utimew systemie Linux. Narzędzia takie jak touchbudowanie na tych interfejsach API.

Najczęstszym uzasadnionym zastosowaniem tych interfejsów API jest zachowanie czasu modyfikacji, np. Podczas kopiowania plików, wyodrębniania ich z archiwów itp.

Kok
źródło
0

Z mojego doświadczenia wynika, że ​​jeden lub więcej komputerów zostało użytych do modyfikacji pliku, a jeden z nich ma niewłaściwy czas systemowy. Trzy najczęstsze przyczyny nieprawidłowego działania systemu, w żadnej określonej kolejności, to:

  1. Nie wszystkie komputery są skonfigurowane do automatycznego przejścia na czas letni.
  2. Ludzie „przypadkowo” zmienili czas systemowy na komputerze.
  3. Ludzie „celowo” zmienili czas systemowy na komputerze jako żart.
Tai Paul
źródło