🧭说明
last 命令是 Linux 系统中用于查看用户登录历史的重要工具,非常适合用于安全审计和故障排查。下面这个表格汇总了它的核心用法和选项。
| 功能/类别 | 命令示例 | 说明 |
|---|---|---|
| 基本语法 | last [选项] [用户名] [终端号] |
读取 /var/log/wtmp 文件显示登录历史 。 |
| 🔍 常用查询 | ||
| → 查看所有记录 | last |
显示所有成功登录的记录,按时间倒序排列 。 |
| → 查看指定用户 | last username |
仅显示指定用户(如 root)的登录记录 。 |
| → 查看系统重启 | last reboot 或 last -x |
reboot 查看重启记录;-x 选项还会显示运行级别变更等信息 。 |
| → 查看失败登录 | sudo lastb |
查看失败的登录尝试,需 root 权限,读取 /var/log/btmp 文件 。 |
| ⚙️ 实用选项 | ||
| → 限制显示条数 | last -n 5 或 last -5 |
只显示最新的 5 条记录 。 |
| → 显示完整时间 | last -F |
显示精确到秒的完整登录和登出时间 。 |
| → 主机名/IP显示 | last -a |
将远程主机名或IP地址显示在最后一列,格式更清晰 。 |
last -R |
不显示主机名或IP地址字段,输出更简洁 。 | |
last -d |
尝试将 IP 地址解析为主机名 。 | |
| → 指定时间点 | last -p "2024-09-28 10:00:00" |
显示在指定时间点正处于登录状态的用户 。 |
| → 指定时间范围 | last -s "2024-09-27" -t "2024-09-28" |
显示指定时间范围内的登录记录 。 |
| → 指定日志文件 | last -f /path/to/file |
读取指定的日志文件(如归档的 /var/log/wtmp.1 ) 。 |
📖 输出信息解读
last 命令的典型输出如下所示,了解各字段含义能帮助更好地分析信息:
用户名 登录终端 远程主机IP/内核版本 登录时间 登出时间 持续时间
root pts/0 192.168.1.105 Mon Jan 15 09:00 still logged in
root pts/0 192.168.1.105 Mon Jan 15 08:30 - 17:30 (09:00)
reboot system boot 5.15.0-91-generic Mon Jan 15 08:25 still running
- 用户名 :登录用户的名称。如果是系统事件,则显示
reboot(重启)或shutdown(关机)等 。 - 登录终端 :
pts/*(如pts/0):通常表示通过 SSH 或 Telnet 建立的远程连接 。tty*(如tty1):通常表示直接连接到本地的终端控制台 。
- 登录/登出时间 :
still logged in表示该会话目前仍然活跃,用户尚未登出 。down表示直到正常关机 。 - 持续时间 :会话持续的时长,格式为
(时:分)。
💡 进阶使用与技巧
-
组合分析 :可以将
last与其他命令(如grep,awk,sort)结合,进行更强大的分析。例如,统计每个用户的登录次数:bashlast | grep -v "reboot" | grep -v "wtmp" | awk '{print $1}' | sort | uniq -c | sort -rn -
注意日志轮转 :系统的日志文件(如
/var/log/wtmp)会定期被压缩归档(如wtmp.1,wtmp.2.gz)。要查看历史记录,可以使用last -f指定文件:bashlast -f /var/log/wtmp.1 # 或者查看压缩过的归档 zcat /var/log/wtmp.2.gz | last -f - -
权限说明:
- 普通用户可以直接使用
last命令查看/var/log/wtmp(成功登录记录)。 - 查看失败登录记录(
lastb或last -f /var/log/btmp)通常需要root权限 。
- 普通用户可以直接使用
⚠️ 重要注意事项
- 日志文件是基础 :
last命令严重依赖于/var/log/wtmp等日志文件。如果这些文件被删除或损坏,命令将无法正常工作 。 - 时间格式 :命令支持多种时间格式,如
YYYY-MM-DD hh:mm:ss、today、yesterday、-5days(5天前)等,灵活运用于-s,-t,-p等选项 。 - 安全提醒 :
last读取的是系统日志,而日志记录理论上可能被具有足够权限的用户修改或伪造。在进行严格的安全审计时,建议结合其他日志(如/var/log/auth.log或/var/log/secure)进行交叉验证 。