Может ли файл казаться измененным до его создания?

Может ли файл казаться измененным до его создания?

Возможно ли, чтобы файл имел дату изменения, которая предшествует дате его создания? Какие действия могут вызвать это событие?

решение1

Если вы создаете файл с нуля, он получает время создания "сейчас" и дату изменения "сейчас". Теперь представьте, что вы копируете этот файл на другой диск. Windows сохранит время изменения, но время создания этого файла будет установлено на время, когда вы скопировали файл на этот диск (т. е. время создания файлачтопривод). Вот так просто.

На самом деле это правильно:

  • Время последнего изменения содержимого файла сохраняется в памяти во время модификации.
  • Время создания файла на этом самом диске сохраняется в поле времени создания.

решение2

В Windows очень легко установить (подделать, если хотите) время создания и изменения файла. Вам не нужно менять часы компьютера; вам даже не нужен доступ локального администратора. Все, что вам нужно, это доступ на запись в нужный файл.

Чтобы установить время создания файла с помощью PowerShell, используйтеSetCreationTime:

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

Чтобы установить время последнего изменения, используйтеSetLastWriteTime:

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

В Linux вы можете легко изменить время последнего изменения файла с помощью флага -d, touchкак показано на рисунке.этот ответ Ask Ubuntu. На самом деле, в файловых системах Linux нет понятия даты создания файлов (дальнейшее чтение в Unix & Linux).

решение3

Рассмотрим архив .tar, который извлечен. Обычно извлеченные файлы имеют метку времени последнего изменения, назначенную из содержимого архива (которая обычно находится в прошлом, если вы не путешественник во времени). Что касается файловой системы, то эти файлы были только что созданы.

Существуют также утилиты для изменения времени модификации существующих файлов, в Linux, например, этотрогатькоманда.

решение4

Самое важное, что следует здесь отметить, это то, что время изменения файла на самом деле не является чем-то особенным — оно хранится так же, как и любые другие данные. Нет никакого способа узнать, когда данные былина самом делепоследний раз, когда кто-то писал или читал.

Отсюда мы видим, что всегда возможно (за исключением носителей с однократной записью, таких как компакт-диски) напрямую изменить биты на диске, которые хранят время последнего изменения или даже время создания.

Более практично, это также осуществимо из обычных операционных систем, как отмечалось в других ответах. В Windows это обеспечивается WinAPISetFileTimeфункция, и вы можете сделать это с помощьюutimeна Linux. Такие инструменты, как touchстроятся на основе этих API.

Наиболее распространенным законным применением этих API является сохранение времени изменения, например, при копировании файлов, извлечении их из архивов и т. д.

Связанный контент