如何在Linux上使用最后一个命令

谁,什么时候,从哪里来的?良好的安全实践表明,您应该知道谁一直在访问您的Linux计算机。我们教你怎么做。

wtmp文件

Linux和其他类似Unix的操作系统,如MacOS,都非常擅长记录日志。在系统内部的某个地方,您能想到的几乎所有东西都有一个日志。我们感兴趣的日志文件名为wtmp。“w”可能代表“何时”或“谁”--似乎没有人同意。“tmp”部分可能代表“临时”,但也可能代表“时间戳”。

我们所知道的是,wtmp是一个日志,它捕获并记录每个登录和注销事件。检查wtmp日志中的数据是对系统管理员职责采取有安全意识的方法的基本步骤。对于一台典型的家用计算机,从安全的角度来看可能不是那么重要,但是能够检查您对计算机的综合使用是很有趣的。

与Linux中的许多基于文本的日志文件不同,wtmp是一个二进制文件。要访问其中的数据,我们需要使用为该任务设计的工具。

那个工具是最后的命令。

最后一条命令

最后一个命令从wtmp日志中读取数据并将其显示在终端窗口中。

如果您键入last并按Enter,它将显示日志文件中的所有记录。

last

来自WTMP的每条记录都显示在终端窗口中。

从左到右,每行包含:

登录者的用户名。 他们登录的终端。终端条目:0表示他们登录到Linux计算机本身。 他们登录的计算机的IP地址。 登录时间和日期戳。 会话的持续时间。

最后一行告诉我们日志中最早记录的会话的日期和时间。

每次启动计算机时,都会将虚拟用户“reboot”的登录条目输入到日志中。终端字段将替换为内核版本。这些条目的已登录会话的持续时间代表计算机的正常运行时间。

显示特定行数

单独使用最后一个命令会产生整个日志的转储,其中大部分会快速通过终端窗口。保持可见的部分是日志中最早的数据。这可能不是你想看到的。

您可以告诉LAST给出特定的输出行数。这可以通过在命令行上提供您想要的行数来实现。请注意连字符。要查看五行,您需要键入-5,而不是5:

last -5

这给出了日志的前五行,这是最新的数据。

显示远程用户的网络名称

-d选项(域名系统)告诉LAST尝试将远程用户的IP地址解析为计算机或网络名称。

last -d

LAST并不总是可以将IP地址转换为网络名称,但该命令会在可以的情况下这样做。

隐藏IP地址和网络名称

如果您对IP地址或网络名称不感兴趣,请使用-R(无主机名)选项取消显示此字段。

因为这样输出更整洁,没有难看的换行,所以在下面的所有示例中都使用了这个选项。如果您使用LAST来尝试识别异常或可疑活动,则不会取消显示此字段。

按日期选择记录

您可以使用-s(自)选项将输出限制为仅显示自特定日期以来发生的登录事件。

如果您只想查看2019年5月26日发生的登录事件,您可以使用以下命令:

last -R -s 2019-05-26

输出显示从指定日期的00:00到日志文件中的最新记录之间发生的登录事件的记录。

搜索到结束日期

您可以使用-t(直到)指定结束日期。这允许您选择发生在两个感兴趣的日期之间的一组登录记录。

此命令要求LAST检索并显示从26日00:00(黎明)到27日00:00(黎明)的登录记录。这将列表范围缩小到仅在26日发生的登录会话。

时间和日期格式

您可以将时间和日期与-s和-t选项一起使用。

可以与使用日期和时间的最后一个选项一起使用的不同时间格式有(据称):

YYYYMMDDhhmmss。 YYYY-MM-DD HH:MM:SS。 YYYY-MM-DD HH:MM-秒设置为00。 YYYY-MM-DD-TIME设置为00:00:00。 hh:mm:ss-日期设置为今天。 HH:MM-日期将设置为今天,秒设置为00。 现在。 昨天-时间设置为00:00:00。 今天-时间设置为00:00:00。 明天-时间定为00:00:00。 +5分钟。 -5天

为什么“据称”?

在本文的研究期间,列表中的第二种和第三种格式不起作用。这些命令在Ubuntu、Fedora和Manjaro发行版上进行了测试。它们分别是Debian、RedHat和Arch发行版的派生版本。这涵盖了Linux发行版的所有主要系列。

last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00

如您所见,该命令根本没有返回任何记录。

使用列表中的第一个日期和时间格式,并且日期和时间与上一个命令相同,则会返回记录:

last -R -s 20190526110000 -t 20190527130000

按相对单位搜索

您还可以指定相对于当前日期和时间以分钟或天为单位的时间段。我们在这里要两天前到一天前的记录。

last -R -s -2days -t -1days

昨天、今天和现在

你可以用昨天和明天作为昨天日期和今天日期的缩写。

last -R -s yesterday -t today

这并不是说这将不包括今天的任何记录。这是预期的行为。该命令要求提供从开始日期到结束日期的记录。它不包括结束日期内的记录。

NOW选项是“当前时间的今天”的缩写。要查看从00:00(黎明)到发出命令为止发生的登录事件,请使用以下命令:

last -R -s today -t now

这将直接显示当前时间的所有登录事件,包括仍在登录的事件。

目前的选择

p(当前)选项允许您找出在某个时间点登录的用户。

他们何时登录或注销并不重要,但如果他们是在您指定的时间登录到计算机的,则他们将包括在列表中。

如果您指定的时间没有日期,则假定您的意思是“今天”。

last -R -p 09:30

仍在登录的人(显然)没有注销时间;他们被描述为仍在登录。如果计算机在您指定的时间之后没有重新启动,它将被列为仍在运行。

如果将NOW速记与-p(当前)选项配合使用,则可以找出发出命令时登录的用户。

last -R -p now

这是一种有点冗长的方式来实现使用WHO命令可以完成的任务。

相关:如何在Linux中确定当前用户帐户

lastb命令

lastb命令值得一提的是。它从名为btmp的日志中读取数据。“b”代表“不好”,但“tmp”部分仍有争议。

lastb列出错误(失败)的登录尝试。它接受与上次相同的选项。因为它们都是失败的登录尝试,所以它们的条目都将具有00:00的持续时间。

您必须对lastb使用sudo。

sudo lastb -R

关于这件事的最后一句话

了解谁登录了您的Linux计算机,以及何时从何处登录,这是非常有用的信息。结合失败登录尝试的详细信息,您可以掌握调查可疑行为的第一步。

相关文章