我知道有一种方法可以使用“ touch ”命令在 Unix 系统中修改给定文件的“修改”(mtime)和“最后一次访问”(atime )时间属性。但我想知道是否也存在修改“上次状态更改”(ctime)属性的方法?
12588 次
2 回答
10
ctime 是文件的 inode 上次更改的时间。mtime 是最后一次更改文件的内容。要修改 ctime,您必须对 inode 执行一些操作,例如对文件执行 chmod 或 chown。
更改文件的内容也必然会更新 ctime,因为 atime/mtime/ctime 值存储在 inode 中。修改 mtime 意味着 ctime 也会得到更新。
于 2011-12-01T19:09:52.520 回答
0
使用“utime”系统调用。如果您查看它的联机帮助页,还会有 utimes,具有微秒级分辨率,以及指向具有纳秒级分辨率的 utimensat 的链接。
对 inode 的任何更改(例如对时间的更改)都会将“ctime”设置为当前时间,因此将 ctime 设置为过去的某个时间会立即将其翻转回现在。他们很早就意识到了这一点,所以没有设置ctime的接口。
这也有助于维护系统的完整性:你可以乱用 atime 和 mtime,但 ctime 是由系统维护的。(例如,黑客可能会修改您的 /bin/login 以允许他访问,即使您删除了他的 /etc/passwd 条目。您发现他是因为文件上的 mtime 异常。下次他将 mtime 更改回系统时已安装,但他无法隐藏ctime!)。
于 2017-04-30T06:49:52.527 回答