首页/安全/取证与溯源速查/wtmp 记录顺序与时间字段的配合
Linux 取证135 条

wtmp 记录顺序与时间字段的配合

wtmp 是追加写入的二进制记录,顺序本身携带信息:同一秒的多条登录/注销按写入顺序排列,可辅助区分并发操作。

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

追加写入的二进制记录

/var/log/wtmp 保存登录、注销、关机与重启等记录,是固定长度的二进制结构,只能用工具体读取。关键在于它的写入方式是追加:新记录永远写在文件末尾,所以文件内部的记录顺序就等于事件发生的顺序。这个性质在处理同一秒内的多条记录时特别有用——时间字段只精确到秒,但顺序仍然可辨。

记录类型不止登录

wtmp 里除了用户登录与注销,还包含系统启动、关机、运行级别切换等记录。用 last -x 可以把这些非用户记录一并显示出来,与用户会话记录区分开。分析时要先按记录类型分组,再把用户会话归到对应的运行阶段里,否则会把重启记录误读成一次异常的登录。

基本信息

适用平台Linux/Unix(utmp/wtmp 体系)
读取命令last -f /var/log/wtmp;utmpdump /var/log/wtmp
记录类型用户登录注销、启动关机、运行级别切换
精度时间字段精确到秒,同秒事件靠文件顺序区分
历史文件轮转后的记录保存在 wtmp.1 等文件中

典型使用场景

  • 还原登录顺序:同一秒内多条记录靠文件顺序判断先后
  • 区分重启与登录:先按记录类型分组再解读
  • 核对会话归属:把用户会话归入对应的运行阶段
  • 确认关机方式:结合关机记录判断是正常还是异常下线
  • 补充认证日志:日志被清理时,wtmp 可能仍保留记录

查看记录顺序

查看记录顺序
# 按时间倒序列出登录记录
last -f /var/log/wtmp | head -20

# 包含重启与关机记录
last -x -f /var/log/wtmp | head -20

# 原始结构视图:文件顺序即事件顺序
utmpdump /var/log/wtmp | tail -10

# 轮转后的历史记录
last -f /var/log/wtmp.1 | head -20

# 文件本身的属性与时间
stat -c '%n | size=%s | mtime=%y' /var/log/wtmp

记录字段读法

字段含义分析用法
用户字段登录用户名空值多为系统记录
终端字段tty 或 pts 设备名pts 说明来自远程会话
来源主机远程登录的地址本地登录通常为空
记录类型登录、注销、启动、关机先分组再解读
时间精确到秒同秒事件靠文件顺序区分
last 输出的顺序是倒序(最新的在前),而 utmpdump 展示的是文件实际顺序(最早的在前),对比时间线时注意方向,避免把顺序读反。
把不同主机上的 last 输出混在一张表里比较会出错:每台主机的记录顺序只在本机内部有意义,跨主机必须依赖统一的时间字段。

易错点

  • 把 last 的输出顺序当事件顺序:默认是倒序,方向读反
  • 把系统记录当用户登录:启动与关机记录混在其中,需要按类型分组
  • 只看 wtmp 不看历史文件:轮转后的记录在 wtmp.1 等文件里
  • 跨主机直接比较顺序:顺序只在本机有效,需改用时间字段
  • 忽略来源字段:远程登录与本地登录的处置思路完全不同

数据来源与参考

  • Linux last man 手册
  • utmpdump man 手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌