🧭说明
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)结合,进行更强大的分析。例如,统计每个用户的登录次数:last|grep-v"reboot"|grep-v"wtmp"|awk'{print $1}'|sort|uniq-c|sort-rn注意日志轮转:系统的日志文件(如
/var/log/wtmp)会定期被压缩归档(如wtmp.1,wtmp.2.gz)。要查看历史记录,可以使用last -f指定文件:last -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)进行交叉验证 。