Возможно ли иметь файл с измененной датой, предшествующей дате его создания? Какие действия могут вызвать это событие?
6 ответов
Рассмотрим архив .tar, который извлечен. Как правило, извлеченные файлы будут иметь метку времени последнего изменения, назначенную из содержимого архива (что обычно в прошлом, если вы не путешественник во времени). Что касается файловой системы, то эти файлы только что были созданы.
Существуют также утилиты для изменения времени модификации существующих файлов, например, в Linux это команда touch .
В 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).
Если вы создаете файл с нуля, он получает время создания "сейчас" и дату изменения "сейчас". Теперь представьте, что вы копируете этот файл на другой диск. Windows сохранит время изменения, но время создания этого файла будет равно времени, когда вы скопировали файл на этот диск (то есть время, когда файл был создан на этом диске). Просто как тот.
Это на самом деле правильно:
- Последний раз, когда содержимое файла было изменено, сохраняется во время изменения.
- Время создания файла на этом диске сохраняется во время создания.
Да. В Windows внесите изменения в файл и сохраните его. Теперь скопируйте файл. Посмотрев на свойства копии, вы увидите, что она имеет более раннюю дату изменения.
Здесь важно отметить, что время изменения файла не является особенным - оно хранится так же, как и любые другие данные. Там нет никакого способа узнать , когда данные фактически последняя запись или чтение с.
Отсюда мы видим, что всегда можно (за исключением носителя с однократной записью, например, CD) перейти и напрямую изменить биты на накопителе, в которых хранится время последнего изменения или даже время создания.
На практике это также выполнимо из обычных операционных систем, как отмечалось в других ответах. В Windows это обеспечивается функцией WinAPI SetFileTime
, и вы можете сделать это с помощью utime
в Linux. Такие инструменты, как touch
строятся поверх этих API.
Наиболее распространенным законным использованием этих API-интерфейсов является сохранение времени модификации, например, при копировании файлов, извлечении их из архивов и т.д.
По моему опыту, это было, когда один или несколько компьютеров были использованы для изменения файла, и один из них имеет неправильное системное время. Три наиболее распространенные причины неправильной работы системного времени:
- Не все компьютеры настроены на автоматический переход на летнее время.
- Люди "случайно" изменили системное время на компьютере.
- Люди "намеренно" изменили системное время на компьютере в шутку.