
在Linux系统里,想知道谁在什么时候登录过,或者现在谁在线,其实有几种非常直接且常用的方法。简单来说,我们主要会用到
last、
who和
w这些命令,以及系统日志文件,比如
/var/log/auth.log或
/var/log/secure。它们能帮你快速了解用户的活动轨迹,无论是出于安全审计,还是单纯的好奇心,这些工具都能提供你所需要的信息。
要查看用户的登录历史,最常用的莫过于
last命令了。它会从
/var/log/wtmp文件中读取信息,告诉你系统重启以来所有用户的登录和登出记录。
last
这个命令会列出用户名、登录终端、登录IP或主机名、登录时间、登出时间以及会话持续时间。有时候,你会看到
still logged in,这表示用户还在会话中。如果看到
down,那通常是系统关机或重启。
而如果你想看当前谁在线,
who和
w命令就派上用场了。
who命令会显示当前登录系统的所有用户,包括他们的用户名、终端、登录时间和来源。
who
w命令则更进一步,它不仅显示当前在线用户,还会告诉你他们正在做什么(执行的命令),这在排查问题时非常有用。
w
至于更详细的,甚至包括失败的登录尝试,那就要深入到系统日志文件里了。在大多数基于Debian的系统上,是
/var/log/auth.log;而在基于Red Hat的系统上,通常是
/var/log/secure。你可以用
grep命令来过滤这些日志。
grep "session opened" /var/log/auth.log grep "Failed password" /var/log/auth.log
这些日志文件记录了系统认证相关的各种事件,包括成功的登录、失败的尝试、SSH连接等等。
为什么追踪用户登录历史至关重要?在我看来,追踪用户登录历史,绝不仅仅是满足好奇心那么简单。它在系统安全和运维管理中扮演着核心角色。想想看,如果你的系统出现了一些异常行为,比如CPU占用率突然飙升,或者某些文件被修改了,你第一反应可能就是去查查最近谁登录过,是不是有未授权的访问。这就像是家里的门禁记录,谁进谁出,一目了然。
从安全角度讲,登录历史是发现潜在入侵行为的黄金线索。一个陌生的IP地址在半夜登录了你的服务器?或者一个不常用的账户突然活跃起来?这些都可能是安全警报。审计时,它也是合规性要求的重要组成部分,很多法规都要求企业保留一定时间的系统访问日志。此外,在日常排障中,如果某个服务出问题了,看看最近有没有哪个用户登录并执行了某些操作,也能帮助我们快速定位问题。我个人就遇到过好几次,通过查看登录历史,发现是某个同事不小心执行了错误命令导致的服务中断。所以,这不是一个可有可无的功能,而是系统健康和安全的关键一环。
last命令的深度剖析与高级用法
last命令,前面提到了,它是查看历史登录记录的利器。但它远不止
last这么简单。它其实有很多实用的参数,能让你更精准地定位信息。
比如,如果你只想看某个特定用户的登录历史,可以直接在
last后面加上用户名:
last username
这会过滤出该用户的所有登录记录。如果想看某个终端(比如
pts/0)的登录情况,也可以:
last pts/0
有时候,我们可能只关心最近的几次登录,而不是所有历史记录。
last -n count这个参数就派上用场了:
last -n 10 # 查看最近10条登录记录
更有趣的是,
last命令默认读取的是
/var/log/wtmp文件。但你知道吗,还有一个
lastb命令,它读取的是
/var/log/btmp文件,专门记录失败的登录尝试!这对于安全审计来说简直是宝藏。
Post AI
博客文章AI生成器
50
查看详情
lastb
通过
lastb,你可以清晰地看到哪些IP地址、哪些用户尝试登录失败了多少次。这对于发现暴力破解攻击非常有用。我经常用它来快速扫描一下系统有没有被恶意尝试登录。记住,
wtmp记录成功,
btmp记录失败,两者结合起来看,才能对系统的登录情况有一个全面的了解。 如何从系统日志中挖掘更详细的登录信息?
当我们谈到登录历史,尤其是更深层次的细节,系统日志文件无疑是信息最丰富的地方。前面简单提到了
/var/log/auth.log或
/var/log/secure,但实际上,这里面蕴含的信息远不止成功或失败的提示。
这些日志文件详细记录了认证过程中的每一个步骤,比如SSH密钥认证、sudo操作、用户会话的开启和关闭等等。你可以用
cat、
tail或
less来查看这些文件,然后结合
grep进行过滤。
例如,要查看所有SSH相关的登录尝试,无论是成功还是失败:
grep "sshd" /var/log/auth.log
这会显示所有与
sshd服务相关的日志条目。你会看到很多信息,比如哪个用户从哪个IP尝试登录,是密码认证还是密钥认证,以及登录成功或失败的结果。
对于使用
systemd的现代Linux系统,
journalctl是一个更强大的工具,它可以查询系统日志,包括认证相关的日志。它的优势在于可以按时间、按服务、按用户等多种方式进行过滤,而且日志是结构化的,查询起来更方便。
journalctl _COMM=sshd # 查看所有sshd服务的日志 journalctl _COMM=sshd -S "2023-01-01 00:00:00" -U "2023-01-02 00:00:00" # 查看特定时间段的sshd日志
使用
journalctl配合
grep,你可以挖出非常具体的登录细节,比如某个用户在某个时间点是通过哪个认证方式登录的,或者哪些IP地址在尝试暴力破解。这些日志是系统安全事件分析的核心数据源,理解如何有效利用它们,对于任何系统管理员来说都至关重要。我个人觉得,熟练掌握
grep和
journalctl的组合拳,能让你在日志排查上事半功倍。 区分当前在线用户与历史登录记录
这是一个经常让人混淆的点,但理解它们之间的区别非常重要。简单来说,
who和
w命令关注的是“当下”——即现在有谁正在使用系统,他们在做什么。而
last命令则着眼于“过去”——系统启动以来,谁曾经登录过。
想象一下,你走进一个办公室。
who和
w就像是你在办公室里环顾一圈,看看现在有哪些人在工位上工作。你能立刻知道小张、小李、小王现在都在。
w甚至还能告诉你小张在写代码,小李在开会。
而
last命令,则更像你查看了办公室的门禁刷卡记录。它会告诉你,今天早上小张几点来的,小李几点走的,昨天小王也来过。即使现在办公室里没人,门禁记录依然在那里,记录着历史。
所以,如果你想快速了解当前系统负载和用户活动,
w是首选,它提供了实时快照。如果你需要进行安全审计,或者追溯某个时间段的登录情况,
last和系统日志(如
auth.log)才是你的主要工具。它们各自服务于不同的目的,但都是系统管理中不可或缺的一部分。有时候,我甚至会先用
w看看有没有可疑用户在线,然后再用
last追溯他的历史行为,这是一种很自然的排查流程。
以上就是Linux如何查看用户的登录历史的详细内容,更多请关注知识资源分享宝库其它相关文章!
相关标签: linux word 工具 session ai linux系统 区别 为什么 red less count var 事件 linux ssh debian 大家都在看: 如何在Linux命令行中进行系统监控? 如何在Linux中设置文件ACL Linux setfacl精细权限控制 Linux怎么限制服务的资源占用 Linux如何检查软件包更新的时间和日志 Linux命令行删除用户的正确方式






发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。