Как изменить свойство "последнего изменения состояния" (ctime) файла в Unix?

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

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам