stat命令可一次性获取文件完整的inode编号、设备号、三类时间戳(access/modify/change)、权限、大小、硬链接数等底层元数据,直读磁盘inode表,结果真实可靠;-c选项支持结构化输出如“%i %s %u %g %a %x %y %z”,ctime为内核强制更新的元数据变更时间,是溯源最可信锚点。

直接用 stat 命令就能一次性获取文件完整的 inode 编号、设备号、三类时间戳(Access / Modify / Change)以及权限、大小、硬链接数等底层元数据——它不解析目录项,而是直读磁盘 inode 表,结果最真实可靠。
查单个文件的完整 Inode 与时间信息
执行 stat 文件路径,例如:
stat /etc/passwd
输出中关键字段含义如下:
- Inode:该文件在当前文件系统内的唯一编号(不是全局唯一)
- Device:设备号(st_dev),配合 inode 号组成唯一标识二元组 (st_dev, st_ino)
- Access:最后一次读取内容的时间(atime),但受 noatime 挂载选项影响,可能长期不更新
- Modify:最后一次修改文件「内容」的时间(mtime),如 vim 保存、echo 追加
- Change:最后一次修改「元数据」的时间(ctime),包括 chmod、chown、mv(同分区)、甚至写入内容都会触发;无法被 touch 伪造,是溯源最可信的时间锚点
用 -c 定制化提取关键字段(适合脚本或巡检)
避免人工解析默认文本,用 -c 直接按需输出结构化内容:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
stat -c "%i %s %U %G %a %x %y %z" /etc/hosts
其中:
- %i → inode 号
- %s → 文件大小(字节)
- %U / %G → 属主名 / 属组名
- %a → 八进制权限(如 644)
- %x → atime(访问时间)
- %y → mtime(修改时间)
- %z → ctime(状态变更时间)
结合时间戳识别异常行为
单看某个时间值意义有限,重点看它们之间的关系和变化趋势:
- mtime 明显滞后于 ctime → 内容没改,但权限或属主被动过,常见于提权后隐藏痕迹
- 多个敏感文件(如 /etc/passwd、/etc/shadow)ctime 在秒级内集中跳变 → 可能是自动化工具批量操作,也可能是入侵者统一清理前的预处理
- Links 字段为 0 → 文件已被删除,但仍有进程在读写(“已删未释放”),常见于日志轮转场景
注意 ctime 不是创建时间,但比 mtime 更难伪造
Linux 不记录文件创建时间(Birth 时间多数文件系统不支持或为 -),而 ctime 是内核强制更新的最后元数据变更时间。攻击者可用 touch -m 重置 mtime/atime,但只要文件被写入或属性被改,ctime 就必然刷新——这是判断真实篡改时间的关键依据。










