Linux如何查看系统登录日志_Linux系统登录日志查看指南
排查Linux系统登录行为需掌握三类核心文件与三个专用命令。二进制文件`/var/log/wtmp`、`/var/log/lastlog`和`/var/log/btmp`分别记录成功登录、最后登录及失败登录事件,对应读取工具为`last`、`lastlog`和`lastb`。文本日志`/var/log/secure`提供更详细的失败登录信息,常配合`grep
排查系统安全、追踪用户行为,登录日志是关键线索。但面对Linux系统里五花八门的日志文件,新手很容易迷失方向。其实,核心脉络非常清晰,抓住三类文件和三个命令,就能直达问题的核心。

简单来说,/var/log/wtmp、/var/log/lastlog和/var/log/btmp是记录登录行为的三个核心二进制文件,而last、lastlog、lastb则是读取它们的专用工具。至于/var/log/secure,它作为文本日志,提供了更丰富的失败登录细节,常与grep命令配合使用。别被复杂的教程绕晕,掌握这几样,就抓住了根本。
查谁在什么时候成功登录过:用 last 读 /var/log/wtmp
想了解谁在什么时间成功登录过系统,last命令是你的首选。它默认读取/var/log/wtmp文件,这个二进制文件忠实记录了所有成功的登录和登出事件,甚至包括系统的启动和关机。它不存储敏感信息如明文密码,但用户名、登录终端(tty或pts)、来源IP(如果是远程登录)、登录时间以及会话时长都一目了然。
- 查看最近记录:使用
last -n 10可以只看最近的10条记录,避免信息过载。 - 追踪特定用户:如果想查看用户
admin的所有登录历史,直接运行last admin即可。 - 定位来源IP:要排查来自
192.168.1.100的登录,可以用管道结合grep:last | grep '192.168.1.100'。不过要注意,IP地址有时可能被截断或显示为主机名。 - 关于历史数据:
wtmp文件本身不会自动轮转清理,但系统可能通过logrotate进行归档。如果发现last命令返回空结果,先别急着怀疑命令,检查一下文件状态:ls -l /var/log/wtmp*,看看是否有备份文件存在。
查谁最后登录过:用 lastlog 读 /var/log/lastlog
如果你需要快速了解系统中每个账户的最后一次登录情况,比如进行账户活跃度审计,那么lastlog命令配合/var/log/lastlog文件就再合适不过了。这个文件按用户ID(UID)索引,只存储每个用户最后一次成功登录的时间、端口和来源IP,非常轻量高效。
- 查看所有用户:运行
lastlog(通常需要root权限)会列出系统中所有用户及其最后登录时间,包括那些从未登录过的账户。 - 查询特定用户:使用
lastlog -u john可以单独查看用户john的最后登录信息。 - 理解“从未登录”:输出中显示
**Never logged in**仅表示该账户从未成功登录过,这并不等同于账户不存在,也不能排除其被暴力破解尝试过的可能。 - 一个常见误区:
lastlog命令本身不支持像last -t 7这样的时间范围参数。网上有些教程提到的lastlog -t 7是错误用法,那是last命令的参数。
查失败登录尝试:用 lastb 读 /var/log/btmp 或直接扫 /var/log/secure
安全排查中,失败登录尝试往往是攻击的前兆。lastb命令专门用于读取/var/log/btmp文件,这里记录了密码错误、用户不存在、SSH密钥拒绝等所有失败的登录事件。
- 查看失败记录:
lastb -n 20可以查看最近的20条失败记录(是的,-n参数对lastb有效)。 - 筛选特定信息:你可以用
grep进行过滤,例如lastb | grep 'invalid user'查找尝试登录不存在用户的记录,或lastb | grep 'root'查看针对root账户的爆破尝试。 - 更可靠的方案:实际上,许多管理员更倾向于直接分析
/var/log/secure(在某些发行版上是/var/log/auth.log)。因为这是文本格式的日志,信息更全:grep "Failed password" /var/log/secure | tail -20。这条命令能提取出完整的失败记录,包括时间戳、来源IP、服务名称以及具体的错误原因。而且,secure日志通常配置了logrotate,会保留多天的历史数据,比btmp更可靠。 - 清理失败日志:请注意,
lastb命令本身不能清空日志。如果需要重置,必须直接操作文件:sudo truncate -s 0 /var/log/btmp。当然,这个操作要谨慎,数据一旦清空就无法恢复了。
为什么 last 和 lastlog 有时查不到近期登录?
命令用得很熟,却查不到预期的记录?问题通常不在命令本身,而在于底层的记录机制。
- 系统支持问题:
wtmp和lastlog文件的写入依赖于utmp系统调用。在一些极度精简的Docker容器或仅使用systemd而无传统init的系统环境中,这项记录功能可能被禁用或未启用。 - 权限限制:普通用户运行
lastlogPermission 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配置。在动手查询之前,先想清楚你要的答案是什么——是用户“最后一次”登录的时间,还是他完整的“全部历史”,或是那些可疑的“失败痕迹”?选对了数据源头,命令才能发挥真正的威力。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















