Может ли файл выглядеть измененным до его создания? [Дубликат]

9

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

AlexanderRD
источник
7
Создайте файл. Поверни время назад. Изменить файл. Поставь часы обратно.
ДэвидПостилл
@DavidPostill Обратите внимание, что, по крайней мере, в Windows, изменение системного времени требует административных привилегий, в то время как есть другие способы создания смешных файлов, которые этого не делают.
Бен Н

Ответы:

8

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

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

Lekensteyn
источник
И для одного файла, cp -pи для вещей, которые имитируют его, как rcp -pи scp -p, а также rsyncс -tили -a, берет modtime из источника.
dave_thompson_085
«время создания» - это термин Windows, а не * nix. * nix имеет «время изменения», которое легко спутать с «временем создания», но это не одно и то же.
plugwash
ext4, по-видимому, хранит «время рождения», которое похоже (но не совпадает с) «временем создания» окон, но нет хорошего способа получить к нему доступ. unix.stackexchange.com/a/50184/122182
plugwash
8

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

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

  • Последний раз содержимое файла было сохранено во время изменения.
  • Время создания файла на этом диске сохраняется во время создания.
Ро-е-е
источник
Этот комментарий имеет наибольшее значение, поскольку он демонстрирует очень вероятный сценарий, когда возникнет несоответствие созданной / измененной даты.
Шукри Адамс
7

В 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

Да. В Windows внесите изменения в файл и сохраните его. Теперь скопируйте файл. Посмотрев на свойства копии, вы увидите, что она имеет более раннюю дату изменения.

Дэвид
источник
1

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

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

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

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

боб
источник
0

По моему опыту, это было, когда один или несколько компьютеров были использованы для изменения файла, и один из них имеет неправильное системное время. Три наиболее распространенные причины неправильной работы системного времени:

  1. Не все компьютеры настроены на автоматический переход на летнее время.
  2. Люди «случайно» изменили системное время на компьютере.
  3. Люди «намеренно» изменили системное время на компьютере в шутку.
Тай Пол
источник