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)进行交叉验证 。
相关推荐
胖咕噜的稞达鸭3 小时前
网络基础:初识TCP/IP协议
网络·网络协议·tcp/ip
Doro再努力3 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
全栈工程师修炼指南3 小时前
Nginx | stream content 阶段:UDP 协议四层反向代理浅析与实践
运维·网络·网络协议·nginx·udp
Lsir10110_3 小时前
【Linux】进程信号(上半)
linux·运维·服务器
cur1es3 小时前
【UDP的报文结构】
网络·网络协议·udp·md5
开开心心就好4 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
惊讶的猫4 小时前
OpenFeign(声明式HTTP客户端)
网络·网络协议·http·微服务·openfeign
css趣多多4 小时前
add组件增删改的表单处理
java·服务器·前端
予枫的编程笔记4 小时前
【Linux进阶篇】从基础到实战:grep高亮、sed流编辑、awk分析,全场景覆盖
linux·sed·grep·awk·shell编程·文本处理三剑客·管道命令
Sheep Shaun4 小时前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区