哪个指令可以获取用户登录日志

焦点 2026-10-17 05:20:49 66

直接说结论:last 和 journalctl 是用户 Linux 下最常用的两个获取登录日志的指令,但它们的登录适用场景完全不同。你要是日志只记得一个,大概率会在关键时刻抓瞎。用户

last 命令读的登录是 /var/log/wtmp 文件,它记录的日志是成功登录的用户名、终端、用户来源 IP 和时间。登录你敲一行 last,日志终端立刻吐出一串历史记录,用户从最近的登录开始往下排。这玩意儿适合快速扫一眼“谁在什么时候登过我的日志机器”。但有个坑——wtmp 是用户二进制文件,你用 cat 直接看会乱码,登录所以必须配 last 这类专用工具。日志而且它默认只显示当前用户能访问的记录,你要是想查 root 的登录历史,得加 sudo 前缀。

真正让我觉得“卧槽这命令真有用”的是 journalctl。它管的是 systemd 的日志,范围更广,不止登录事件,还包括 SSH 认证失败、sudo 提权、系统重启这类杂七杂八的东西。比如你想查今天凌晨 2 点到 3 点有没有人尝试暴力破解 SSH,可以这么写:journalctl --since "2024-11-20 02:00" --until "2024-11-20 03:00" | grep sshd。输出里会明确标出 Failed password 或者 Accepted password,一眼就能看出攻击者的 IP 和尝试次数。相比之下,last 只告诉你成功登录,失败尝试它一概不管。

有个细节很多人忽略:last 查看的是 wtmp,但系统里还有 btmp 文件专门记录失败的登录尝试。想看谁在撞你的密码,用 lastb 这个命令。我前阵子检查一台公网服务器,跑了 lastb 发现短短三天有四百多次 SSH 暴力尝试,来源 IP 遍布俄罗斯、巴西和韩国。那一刻我意识到,光靠 last 看成功记录根本不够,安全监控得盯失败日志。

再说个实战场景。假设你怀疑某个员工半夜登录过服务器,但又不想翻整个日志文件——那就用 last -i -n 20,-i 把域名解析成 IP,-n 20 只显示最近 20 条。或者你想查特定用户,比如 last zhangsan,输出立刻过滤出这个人的所有登录记录。要是嫌终端滚动太快,加个 | less 慢慢翻。

最后提醒一句:这些日志文件不是无限增长的。wtmp 和 btmp 默认会被 logrotate 定期轮转,旧记录会被压缩成 .gz 文件。你要是想查三个月前的登录记录,得先 zcat /var/log/wtmp.1.gz | last 才能看到。别问我怎么知道的——有次我排查一台老服务器,折腾半天才发现记录早被轮转走了,白忙活一场。

所以下次有人问你“哪个指令能获取登录日志”,别只背一个答案。看成功记录用 last,看失败尝试用 lastb,要全面分析就上 journalctl。三个配合着用,才能把登录这件事摸得门儿清。

本文地址:http://www.79wt.cn/news/1186f1599866.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

友情链接