Linux命令-last(查看用户登录历史)

🧭说明

last 命令是 Linux 系统中用于查看用户登录历史的重要工具,非常适合用于安全审计和故障排查。下面这个表格汇总了它的核心用法和选项。

功能/类别 命令示例 说明
基本语法 last [选项] [用户名] [终端号] 读取 /var/log/wtmp 文件显示登录历史 。
🔍 常用查询
→ 查看所有记录 last 显示所有成功登录的记录,按时间倒序排列 。
→ 查看指定用户 last username 仅显示指定用户(如 root)的登录记录 。
→ 查看系统重启 last rebootlast -x reboot 查看重启记录;-x 选项还会显示运行级别变更等信息 。
→ 查看失败登录 sudo lastb 查看失败的登录尝试,需 root 权限,读取 /var/log/btmp 文件 。
⚙️ 实用选项
→ 限制显示条数 last -n 5last -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 表示直到正常关机 。
  • 持续时间 :会话持续的时长,格式为 (时:分)

💡 进阶使用与技巧

  1. 组合分析 :可以将 last 与其他命令(如 grep, awk, sort)结合,进行更强大的分析。例如,统计每个用户的登录次数:

    bash 复制代码
    last | grep -v "reboot" | grep -v "wtmp" | awk '{print $1}' | sort | uniq -c | sort -rn
  2. 注意日志轮转 :系统的日志文件(如 /var/log/wtmp)会定期被压缩归档(如 wtmp.1, wtmp.2.gz)。要查看历史记录,可以使用 last -f 指定文件:

    bash 复制代码
    last -f /var/log/wtmp.1
    # 或者查看压缩过的归档
    zcat /var/log/wtmp.2.gz | last -f -
  3. 权限说明

    • 普通用户可以直接使用 last 命令查看 /var/log/wtmp(成功登录记录)。
    • 查看失败登录记录(lastblast -f /var/log/btmp)通常需要 root 权限 。

⚠️ 重要注意事项

  • 日志文件是基础last 命令严重依赖于 /var/log/wtmp 等日志文件。如果这些文件被删除或损坏,命令将无法正常工作 。
  • 时间格式 :命令支持多种时间格式,如 YYYY-MM-DD hh:mm:sstodayyesterday-5days(5天前)等,灵活运用于 -s, -t, -p 等选项 。
  • 安全提醒last 读取的是系统日志,而日志记录理论上可能被具有足够权限的用户修改或伪造。在进行严格的安全审计时,建议结合其他日志(如 /var/log/auth.log/var/log/secure)进行交叉验证 。
相关推荐
2401_892070981 天前
【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析
linux·c++·日志系统·日志滚动
lwx9148521 天前
Linux-Shell算术运算
linux·运维·服务器
somi71 天前
ARM-驱动-02-Linux 内核开发环境搭建与编译
linux·运维·arm开发
双份浓缩馥芮白1 天前
【Docker】Linux 迁移 docker 目录(软链接)
linux·docker
为何创造硅基生物1 天前
ESP32S3的RGB屏幕漂移问题
网络
好运的阿财1 天前
process 工具与子agent管理机制详解
网络·人工智能·python·程序人生·ai编程
黄昏晓x1 天前
Linux ---- UDP和TCP
linux·tcp/ip·udp
路溪非溪1 天前
Linux驱动开发中的常用接口总结(一)
linux·运维·驱动开发
此刻觐神1 天前
IMX6ULL开发板学习-01(Linux文件目录和目录相关命令)
linux·服务器·学习
2401_892070981 天前
【Linux C++ 日志系统实战】高性能文件写入 AppendFile 核心方法解析
linux·c++·日志系统·文件写对象