Как изменить свойство «Последнее изменение статуса» (CTME) файла в UNIX?

StackOverflow https://stackoverflow.com/questions/8346852

  •  27-10-2019
  •  | 
  •  

Вопрос

Я знаю, что есть способ изменить оба 'модификация' (Mtime) а также 'последний доступ' (время) Свойства времени данного файла в системе UNIX с помощью "трогать"Команда. Но мне интересно, существует ли способ изменить способ изменить "Последнее изменение статуса" (ctime) также имущество?

Это было полезно?

Решение

CTME - это время, когда INODE файла в последний раз изменялся. Mtime - это последний раз, когда содержимое файла было изменено. Чтобы изменить CTME, вам придется что -то сделать с INODE, например, выполнять CHMOD или поставить файл.

Изменение содержания файла обязательно будет также обновлять CTME, так как значения Atime/Mtime/Ctime хранятся в INODE. Модификация mtime означает, что ctime также обновляется.

Другие советы

Используйте системный вызов "Utime". Если вы посмотрите на его производительность, то также будет использование, имея микросекундную разрешение и ссылку на Utimensat, которая имеет наносекундное разрешение.

Любое изменение в INODE, подобное такому изменению в Times, установит «Ctime» на текущее время, поэтому установление CTME в прошлое сразу же перевернет его в настоящее. Они осознали это давным -давно, поэтому нет интерфейса для установки CTME.

Это также помогает поддерживать целостность системы: вы можете возиться с Atime и Mtime, но CTME поддерживается системой. (Хакер может, например, изменить ваш /bin /bin /login, чтобы он позволил ему получить доступ, даже если вы удалите его /и т. Д. /Passwd. Вы заметите его из -за необычного Mtime в файле. В следующий раз он изменит Mtime обратно, когда система был установлен, но он не может скрыть Ctime!).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top