Чи можливо мати файл, який має змінену дату, що до дати його створення? Які дії спричинили б цю подію?
Чи можливо мати файл, який має змінену дату, що до дати його створення? Які дії спричинили б цю подію?
Відповіді:
Розглянемо архів .tar, який витягується. Зазвичай вилучені файли матимуть останню часову позначку модифікації, призначену з вмісту архіву (що, як правило, минуле, якщо ви не мандрівник часу). Що стосується файлової системи, то ці файли щойно створені.
Існують також утиліти для зміни часу модифікації існуючих файлів, наприклад, у Linux це сенсорна команда.
cp -p
і для речей, які його імітують, як rcp -p
і scp -p
, як і rsync
з, -t
або -a
забирає модтайм з джерела.
Якщо ви створюєте файл з нуля, він отримує час створення "зараз" та дату модифікації "зараз". Тепер уявіть, як скопіювати цей файл на інший диск. Windows збереже час модифікації, але час створення цього файлу буде встановлено на момент копіювання файлу на цей диск (тобто час створення файлу на цьому диску). Просто як це.
Це насправді правильно:
У 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
, як показано в цьому запитанні відповіді Ubuntu . Насправді не існує поняття дати створення файлів у файлових системах Linux ( подальше читання в Unix & Linux ).
Найважливіше, що тут слід зазначити, це те, що час модифікації файлів насправді не особливий - він зберігається так само, як і будь-які інші дані. Немає можливості сказати, коли дані насправді були написані або прочитані з них.
Звідси ми бачимо, що завжди можна (за винятком медіа для запису, як-от CD), перейти та безпосередньо змінити біти на диску, які зберігають останній час, або навіть час створення.
Що більш практично, це також можливо зробити в рамках загальних операційних систем, як відзначали інші відповіді. У Windows це передбачено функцією WinAPI SetFileTime
, і це можна зробити за допомогою utime
Linux. Такі інструменти, як touch
збірка на основі цих API.
Найбільш поширене законне використання цих API - це збереження часу модифікації, наприклад, при копіюванні файлів, витягуванні їх з архівів тощо.
На мій досвід, це було, коли один або декілька комп'ютерів були використані для зміни файлу, і один з них має неправильний системний час. Три найпоширеніші причини, коли системний час помиляється, не в конкретному порядку: