Linux如何查看系统登录日志_Linux系统登录日志查看指南

作者:袖梨 2026-06-06
Linux查看系统登录日志核心是三类文件与三个命令:/var/log/wtmp(last读取,查全部成功登录)、/var/log/lastlog(lastlog读取,查各用户最后一次登录)、/var/log/btmp(lastb读取,查失败登录),配合grep解析/var/log/secure可获更详细失败信息。

Linux 查看系统登录日志,核心就三类文件 + 三个命令,别被各种“指南”绕晕——/var/log/wtmp/var/log/btmp/var/log/secure 是真实记录源,lastlastloglastb 是对应读取工具,其他命令(如 grep 直接扫 /var/log/secure)只是辅助。

查谁在什么时候成功登录过:用 last/var/log/wtmp

last 默认读取 /var/log/wtmp,这个二进制文件记录所有成功登录/登出、系统启动/关机事件。它不存明文密码或完整命令,但含用户名、终端(tty/pts)、IP(远程时)、时间、持续时长。

  • 只看最近 10 条:last -n 10
  • 查某用户(比如 admin)的全部登录历史:last admin
  • 查某 IP(比如 192.168.1.100)的登录记录:last | grep '192.168.1.100'(注意 IP 可能被截断或显示为 hostname)
  • 想看更早的记录?wtmp 不自动轮转,但系统可能配置了 logrotate;如果文件被清空或损坏,last 就返回空——这时别硬刷,先确认 ls -l /var/log/wtmp* 是否有归档备份

查谁最后登录过:用 lastlog/var/log/lastlog

lastlog 读的是 /var/log/lastlog,一个按 UID 索引的二进制文件,只存每个用户「最后一次」登录的时间、端口和来源 IP。它轻量、快速,适合批量检查账户活跃度。

  • 列出所有用户最后登录时间(含未登录过的):lastlog(需 root 权限,否则普通用户只能看到自己)
  • 查单个用户(比如 john):lastlog -u john
  • 注意:该文件不记录登出或失败尝试;如果输出显示 **Never logged in**,说明该用户从未成功登录过,但不代表账户不存在或没被爆破过
  • 该文件没有时间范围参数(如 -t-b),所谓“lastlog -t 7”是常见误解——那是 last 的参数,lastlog 不支持

查失败登录尝试:用 lastb/var/log/btmp 或直接扫 /var/log/secure

lastb/var/log/btmp(也是二进制),专存失败登录事件,比如密码错、用户不存在、SSH 密钥拒绝。但它默认只保留最近若干次(受文件大小和系统配置限制),且重启后不会自动清空。

  • 查看失败记录:lastb -n 20-n 有效,lastb 支持)
  • 筛选特定用户失败记录:lastb | grep 'invalid user'lastb | grep 'root'
  • 但更常用、更可靠的方式是直接 grep /var/log/securegrep "Failed password" /var/log/secure | tail -20 ——因为 /var/log/secure 是文本格式,带完整时间戳、IP、服务名(sshd/pam)、甚至错误原因,且通常被 logrotate 轮转保留多天
  • 清空失败日志?lastb 本身不能清,得清文件:sudo truncate -s 0 /var/log/btmp(慎用!清完就真没了)

为什么 lastlastlog 有时查不到近期登录?

不是命令坏了,大概率是底层文件没更新或权限不对:

  • /var/log/wtmp/var/log/lastlog 需要 utmp 系统调用写入,而某些精简版容器或 systemd-only 系统(无传统 init)可能禁用或未启用 utmp 记录
  • 非 root 用户运行 lastlog 会提示 Permission denied,因为它需要读 /var/log/lastlog,而该文件默认权限是 600 且属主为 root
  • last 输出为空?先运行 ls -l /var/log/wtmp,如果大小为 0,说明记录根本没开启;再检查 systemctl status rsyslog 是否正常运行——rsyslogd 停了,wtmp 仍可写,但 /var/log/secure 就断了

真正难的不是命令怎么敲,而是理解每个文件的生命周期:wtmp 永久累积但不轮转,btmp 极易被填满后丢旧记录,secure 文本全量但依赖 rsyslog 配置。查登录行为前,先确认你要的答案在哪一层——是「最后一次」,还是「全部历史」,还是「失败痕迹」,选错源头,命令再熟也没用。

相关文章

精彩推荐