lastlog 账号最近登录
lastlog 读取 /var/log/lastlog,按用户 UID 建立索引,列出每个账号最近一次登录的时间与来源,用来快速看出哪些账号长期活跃、哪些账号从未登录。它是稀疏文件,体积会随系统里最大 UID 的增长而增大,所以在小系统上可能出现文件很大而实际内容很少的情况。
基本信息
| 数据文件 | /var/log/lastlog,按 UID 索引的稀疏文件 |
|---|---|
| 常用命令 | lastlog、lastlog -t <天数>、lastlog -u <账号> |
| 新版实现 | 部分发行版提供 lastlog2 与对应的新数据文件 |
| 记录内容 | 最近一次登录时间、来源地址与端口或终端 |
| 固有局限 | 只保留最后一次记录,不含登录次数与时长 |
典型使用场景
- 快速发现从未登录却突然出现记录的账号
- 判断服务账号是否被人以交互方式登录过
- 核对账号最后一次登录的来源是否符合预期网段
- 与认证日志对照,确认最后一次登录具体做了什么
- 排查长期未使用的账号,作为清理与禁用依据
查询与核对
查询与核对
lastlog | grep -v 'Never logged in' # 只看有登录记录的账号
lastlog -t 7 # 只看最近 7 天登录过的
lastlog -u root # 单账号查询
ls -l /var/log/lastlog; du -h /var/log/lastlog # 稀疏文件的实际占用与表观大小
stat -c '%y %n' /var/log/lastlog # 文件自身修改时间输出列读法
| 列 | 含义 | 异常参考 |
|---|---|---|
| Username | 账号名 | 陌生账号名或新增账号 |
| Port | 登录来源,形如地址冒号端口或终端名 | 来自公网地址的 root 登录 |
| From | 来源地址或终端 | 与业务网段明显不符的来源 |
| Latest | 最近一次登录时间 | 长期不用的账号突然出现记录 |
lastlog 只保留最后一次登录,无法体现登录次数与时长。判断账号是否被反复使用,要结合认证日志与登录会话记录;只看这一处很容易低估账号的实际活跃程度。
lastlog 文件可被人为清空或改写:如果所有账号都显示从未登录,而认证日志里却有成功登录记录,这条矛盾本身就是要追下去的线索,不要直接采信命令输出。