我知道有一种方法可以修改'修改'( mtime )和'上次访问'( atime )Unix系统中给定文件的时间属性,使用“ touch ”命令。 但我想知道是否有办法修改“上次状态更改”( ctime )属性?
答案 0 :(得分:7)
ctime是文件的inode上次更改的时间。 mtime是文件内容最后一次更改的时间。要修改ctime,你必须对inode做一些事情,比如在文件上做一个chmod或chown。
更改文件的内容也必然会更新ctime,因为atime / mtime / ctime值存储在inode中。修改mtime意味着ctime也会更新。
答案 1 :(得分:0)
使用“utime”系统调用。如果您查找其联机帮助页,也会有utimes,具有微秒分辨率,以及指向具有纳秒分辨率的utimensat的链接。
对inode的任何更改(例如对时间的这种更改)都会将“ctime”设置为当前时间,因此将ctime设置为过去会立即将其翻转回当前时间。很久以前他们意识到这一点,所以没有设置ctime的界面。
这也有助于维护系统的完整性:您可以使用atime和mtime,但ctime由系统维护。 (黑客可能会修改你的/ bin / login以允许他访问,即使你删除他的/ etc / passwd条目。你发现他是因为文件上的异常mtime。下次他将mtime改回系统时安装了,但他无法隐藏ctime!)。