utmpdump 转换登录记录
Linux 把登录会话写进 /var/log/wtmp,把失败登录写进 /var/log/btmp,把当前会话放在 /var/run/utmp,三者都是二进制结构文件,用文本工具直接读只会得到乱码。utmpdump 属于 util-linux 工具集,能把这三类文件转成文本,便于脚本统计与前后对比。
基本信息
| 适用平台 | Linux(util-linux) |
|---|---|
| 文件分工 | wtmp 登录历史、btmp 失败登录、utmp 当前会话 |
| 输出列 | 类型、PID、会话 ID、用户、终端、来源主机、时间 |
| 类型编号 | USER_PROCESS 为 7、DEAD_PROCESS 为 8、BOOT_TIME 为 2 |
| 权限要求 | 读取需要 root 或 utmp 组成员 |
| 时间口径 | 默认按本机时区解释,跨机比较前先统一 |
典型使用场景
- 统计登录与注销事件的时间分布
- 分析失败登录的节奏与来源
- 与认证日志互校,检查是否存在缺口
- 还原会话使用的终端与来源主机
- 导出文本供时间线工具纳入统一分析
最小示例
最小示例
utmpdump /var/log/wtmp | tail -20 # 最近的登录与注销记录
utmpdump /var/log/btmp | head -20 # 失败登录记录(需 root)
utmpdump /var/run/utmp # 当前在线会话
utmpdump /var/log/wtmp | awk -F'[][]' '$2==7' | wc -l # 统计登录条目数
utmpdump /var/log/wtmp > wtmp.txt # 导出文本便于脚本处理
wc -l wtmp.txt # 核对导出行数输出逐列读法
| 字段 | 含义 | 注意 |
|---|---|---|
| 类型 | 数字编号,表示记录类别 | 7 为登录、8 为注销、2 为重启 |
| PID | 相关进程号 | 登录与注销可据此配对 |
| 会话 ID | session id | 用于关联同一次会话 |
| 用户 | 账号名 | 重启与关机记录为空 |
| 终端 | tty 或 pts 设备 | 会话归属的辅助判断依据 |
| 主机 | 来源地址或主机名 | 本地控制台登录为空 |
| 时间 | 事件发生时刻 | 带时区偏移,注意换算 |
类型字段是数字编号,写统计条件前先用样本核对:7 为登录、8 为注销、2 为重启,编号含义固定但直观性差。
btmp 专门记录失败登录,通常只有 root 可读;该文件增长很快,轮转配置是否正常值得一并检查。
直接编辑或截断这些文件会破坏登录记录且无法恢复;取证阶段只读,需要处理时先复制副本。