首页/安全/取证与溯源速查/ext4 时间戳与 crtime 获取
Linux 取证135 条

ext4 时间戳与 crtime 获取

ext4 为每个 inode 保存创建时间(crtime),常规 stat 未必显示,可用 debugfs 直接读取;四类时间戳互为补充用于还原文件生命周期。

取证与溯源速查安全更新于 2026-10-13

文件创建时间

传统 Unix 文件时间只有访问、修改与元数据变更三种,ext4 在 inode 空间足够时另外记录创建时间 crtime。它对取证很关键:mtime 可以伪造,而 crtime 与 ctime 很难在文件系统层面被改回去。读取它通常有两条路,stat 的 %w 与 debugfs。

基本信息

四类时间atime 访问、mtime 内容修改、ctime 元数据变更、crtime 创建
stat 读取%w 输出可读形式,%W 输出 Unix 秒
备选方式debugfs -R 'stat <路径或 inode>' /dev/sdaX
前提条件文件系统为 ext4 且 inode 大小足够,通常是 256 字节
缺失表现文件系统不支持时 %w 显示为短横线
权限要求读取裸设备需要 root

典型使用场景

  • 判断文件的创建时刻
  • 对比 mtime 与 ctime 识别时间被改写的情况
  • 分析已删除文件残留的元数据信息
  • 与日志时间线互校确定事件顺序
  • 核对备份与恢复操作的实际时间

最小示例

最小示例
stat -c '%n B=%w M=%y C=%z A=%x' /etc/passwd      # 四类时间一览
stat -c '%n B=%W' /etc/passwd                     # 创建时间的 Unix 秒
debugfs -R 'stat /etc/passwd' /dev/sda1 2>/dev/null | grep -i crtime
ls -i /etc/passwd                                 # 取得 inode 号
mount | grep -E 'ext4|sda1'                       # 确认文件系统类型
sha256sum /etc/passwd                             # 固定内容指纹便于比对

时间类型与价值

时间含义取证价值
atime最后访问时间易被访问操作更新,除非挂载时禁用
mtime内容最后修改时间可被 touch 之类命令直接改写
ctime元数据最后变更时间无法直接设置,改动元数据即更新
crtime创建时间(ext4)最能暴露时间伪造,重点核对
stat 的 %w 在文件系统不支持或 inode 空间不足时显示为短横线,此时改用 debugfs 读取;两种方式结果一致才能采信。
从压缩包或网络解压得到的文件,其 crtime 是落地时刻而不是原始创建时刻,解释时要把来源写清楚。
如果一批文件的 crtime 完全相同而 mtime 各不相同,通常说明它们在同一时刻被写入磁盘,这个整齐的时间点本身就是事件锚点。
对裸设备执行 debugfs 属于只读访问,但参数错误仍可能触碰文件系统结构;操作前务必确认设备路径与挂载状态。

易错点

  • 把 %w 的空值当异常:文件系统不支持时显示短横线是正常现象,与文件本身无关
  • 把保留的时间当创建时间:复制或打包时保留 mtime 是常规行为,必须结合 crtime 判断
  • 忽略 ctime 的联动:改权限、改属主与重命名都会刷新 ctime,用它判断内容改动会出错
  • 在挂载状态下操作裸设备:路径或参数出错可能影响在线文件系统,操作前先确认设备与挂载关系

数据来源与参考

  • ext4 文档(inode 时间戳)
  • man 8 debugfs(e2fsprogs)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌