Как изменить свойство 'last change status' (ctime) файла в Unix? - PullRequest
8 голосов
/ 01 декабря 2011

Я знаю, что есть способ изменить как ' модификация ' ( mtime ), так и ' последний доступ ' ( atime ) свойства данного файла в Unix System с помощью команды " touch ". Но мне интересно, существует ли способ изменить «Последнее изменение статуса» ( ctime ), а также?

Ответы [ 2 ]

7 голосов
/ 01 декабря 2011

ctime - время последнего изменения индекса файла.mtime - последний раз, когда содержимое файла было изменено.Чтобы изменить ctime, вам нужно будет что-то сделать с inode, например, выполнить chmod или chown для файла.

Изменение содержимого файла также обязательно обновит ctime, так как значения atime / mtime / ctimeхранятся в иноде.Изменение mtime означает, что ctime также обновляется.

0 голосов
/ 30 апреля 2017

Используйте системный вызов "utime". Если вы посмотрите на его man-страницу, там также будут времена, имеющие микросекундное разрешение и ссылку на utimensat, которая имеет наносекундное разрешение.

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

Это также помогает поддерживать целостность системы: вы можете возиться с atime и mtime, но ctime поддерживается системой. (Хакер может, например, изменить ваш / bin / login, чтобы разрешить ему доступ, даже если вы удалите его / etc / passwd запись. Вы заметите его из-за необычного mtime в файле. В следующий раз он вернет mtime обратно, когда система был установлен, но он не может скрыть ctime!).

...