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)进行交叉验证 。
相关推荐
时空自由民.15 分钟前
WebSocket 协议介绍
网络·websocket·网络协议
twc82929 分钟前
全链路压测的环境复杂性:网络架构、应用架构与性能影响因素全解析
网络·软件测试·架构·性能测试·全链路压测
杨云龙UP1 小时前
ODA运维实战:Oracle 19c YJXT PDB表空间在线扩容全过程_20260503
linux·运维·服务器·数据库·oracle
郝学胜-神的一滴1 小时前
跨平台动态库与头文件:从原理到命名的深度解析
linux·c++·程序人生·unix·cmake
love you joyfully1 小时前
如何随时随地访问你的“进程”?
网络·人工智能·网络安全·远程访问·网络技术
yyuuuzz1 小时前
aws 基础认知与实践注意点
运维·服务器·网络·云计算·github·aws
Rust语言中文社区2 小时前
【Rust日报】2026-05-02 Temper - 用 Rust 编写的 Minecraft 服务器项目发布 0.1.0 版
运维·服务器·开发语言·后端·rust
ATCH IERV2 小时前
Java实战:Spring Boot application.yml配置文件详解
java·网络·spring boot
吠品2 小时前
高性能JS数组操作:何时选用push、unshift、splice或扩展运算符?
linux·服务器·数据库
fish_xk2 小时前
Linux中的指令和权限
linux·运维·服务器