在本教程中,我们将看到如何在 Linux 中使用 last
, lastb
和 lastlog
带有示例的命令。
介绍
作为 Linux 系统管理员,您应该定期检查 Linux 服务器中用户的登录日期和时间。 它为您提供了一些有用的详细信息,例如有多少用户处于活动状态、多少用户处于非活动状态以及他们何时登录以及登录时长等。
如果某些用户帐户长时间未使用,您可以在不再需要时将其锁定。 您还可以在审核 Linux 服务器时使用上次登录日期,并调查可能是哪个用户导致了问题。
幸运的是,GNU/Linux 操作系统包括三元组命令,即 last
, lastb
和 lastlog
显示最近用户的登录日期。
1. 使用 last 命令显示 Linux 中最后登录用户的列表
顾名思义, last
命令用于查看 Linux 和类 Unix 系统中最后登录的用户。 它通过阅读 /var/log/wtmp
文件并查找自该文件创建以来所有已登录和已注销的用户。 您还可以列出特定用户的最近登录日期,甚至查找 谁重新启动了 Linux 系统 在…的帮助下 last
命令。
请注意,您的系统仅将信息记录在 wtmp
文件。 如果此文件因任何原因不可用,只需使用 touch
命令如下:
$ sudo touch /var/log/wtmp
现在让我们找出最近的登录日期和时间 last
命令。
要在您的 Linux 系统中显示上次登录、持续时间和其他信息,只需运行:
$ last
样本输出:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running reboot system boot 5.4.0-48-generic Fri Nov 20 10:13 - 11:44 (01:31) . . . reboot system boot 5.4.0-33-generic Wed Jul 8 08:49 - 11:41 (02:52) ostechni web console Mon Jul 6 08:19 - 08:20 (00:00) ostechni pts/2 192.168.225.37 Mon Jul 6 08:14 - 08:30 (00:15) ostechni pts/0 192.168.225.37 Mon Jul 6 07:41 - 12:27 (04:45) reboot system boot 5.4.0-33-generic Mon Jul 6 07:21 - 12:27 (05:06) ostechni pts/3 192.168.225.37 Sat Jul 4 12:01 - 12:12 (00:10) ostechni pts/2 192.168.225.37 Sat Jul 4 11:14 - 13:01 (01:46) ostechni pts/0 192.168.225.37 Sat Jul 4 07:55 - 13:01 (05:05) reboot system boot 5.4.0-33-generic Sat Jul 4 07:53 - 13:03 (05:09) ostechni tty1 Fri May 29 10:07 - down (00:00) reboot system boot 5.4.0-33-generic Fri May 29 10:06 - 10:07 (00:01) ostechni pts/0 192.168.225.37 Fri May 29 09:36 - 10:06 (00:29) ostechni tty1 Fri May 29 09:36 - down (00:29) reboot system boot 5.4.0-31-generic Fri May 29 09:35 - 10:06 (00:30) ostechni tty1 Sun May 24 13:17 - down (00:02) reboot system boot 5.4.0-31-generic Sun May 24 13:16 - 13:20 (00:03) wtmp begins Sun May 24 13:16:52 2020
正如您在上面的输出中看到的,最后一个命令显示了最近登录的以下详细信息:
- 用户的名称。 如果任何用户仍处于登录状态,它也会显示该详细信息。
- 发生会话的终端设备的类型(例如 tty 或 pts)。
- 用户登录的源 IP 地址或主机名。
- 登录日期和时间戳(即登录会话开始和停止时间)。
- 会话的总持续时间。
- 最后一行表示最早记录会话的日期和时间
wtmp
日志文件。
在上面的输出中,您可能已经注意到有一个名为的特殊用户的登录条目 reboot
. 这 last
每次启动计算机时,命令都会保留该用户的记录。
当我们跑 last
命令没有任何选项,它将显示整个日志输出。 它有许多选项可以根据您的喜好过滤、格式化和限制输出。 我已经包含了最常见选项的示例。
1.1。 将输出限制为特定用户
如前所述, last
命令列出所有最近登录记录在 wtmp
文件。 如果要显示特定用户的最近登录(即查看特定用户的所有登录),对于 example ostechnix,命令将是:
$ last ostechnix
样本输出:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28) [...]
您还可以使用逗号分隔指定多个用户名,如下所示:
$ last ostechnix sk
1.2. 将输出限制为特定的 tty 或 pts
这 last
命令会记录发生会话的终端设备的类型(例如 tty 或 pts)。
说为 example,用户可能已经在本地或通过 ssh 登录到 Linux 机器。 如果要将输出限制为特定 tty
,只需运行:
$ last tty1
样本输出:
ostechni tty1 Thu Jan 7 08:29 still logged in ostechni tty1 Wed Jan 6 11:00 - down (02:31) ostechni tty1 Fri Nov 20 11:52 - down (00:38) [...]
tty 的名称可以缩写。 例如,您可以运行 last 1
代替 last tty1
.
同样,仅列出 pts
会话的登录,运行:
$ last pts/0 ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28) sk pts/0 192.168.225.37 Wed Jan 6 11:02 - 11:02 (00:00) [...]
您还可以使用 ttys 指定多个用户名,如下所示:
$ last ostechnix sk pts/0 tty1
1.3. 将输出限制为特定行数
这 wtmp
日志文件可能有大量条目。 如果你想限制输出 last
命令到一定数量的行,使用 -n
标志如下:
$ last -n 5
或者,
$ last -5
上面的命令只会在输出中显示 5 行:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running ostechni pts/0 192.168.225.37 Wed Jan 6 11:02 - 13:31 (02:28) sk pts/0 192.168.225.37 Wed Jan 6 11:02 - 11:02 (00:00) wtmp begins Sun May 24 13:16:52 2020
1.4. 显示主机名而不是 IP 地址
默认情况下, last
命令显示用户登录它的源 IP。 如果要显示主机名而不是 IP 地址,请使用 -d
(或者 --dns
) 选项:
$ last -d -5
您还可以在输出中显示完整的用户名和域名 -w
(或者 --fullnames
) 选项。
1.5。 隐藏主机名和 IP 地址
要禁止显示主机名或 IP 字段,请使用 -R
选项。
$ last -5 -R
样本输出:
ostechni pts/0 Thu Jan 7 08:30 still logged in ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot Thu Jan 7 08:20 still running ostechni pts/0 Wed Jan 6 11:02 - 13:31 (02:28) sk pts/0 Wed Jan 6 11:02 - 11:02 (00:00) wtmp begins Sun May 24 13:16:52 2020
1.6. 显示特定时间的用户登录记录
这 -p
(或者 --present
) 选项用于查找当前或指定时间登录的用户。
为了 example,运行以下命令列出今天 8:30 最后登录的用户:
$ last -p 08:30
样本输出:
ostechni tty1 Thu Jan 7 08:29 still logged in reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 still running wtmp begins Sun May 24 13:16:52 2020
要列出当前记录的人员(即在运行此命令时,请运行:
$ last -p now

1.7. 显示特定时间间隔内的登录用户
这 last
命令有两个选项,即 -s
(--since
) 和 -t
(--until
) 以显示特定时间段内的登录用户。 这 -s
选项用于显示自指定时间以来的登录状态和 -t
选项用于显示在指定时间之前的登录状态。
为了 example如果你想显示最后一次登录 2021-01-07
到 2021-01-11
,命令是:
$ last -s 2021-01-07 -t 2021-01-11
样本输出:
ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 - 13:16 (04:46) ostechni tty1 Thu Jan 7 08:29 - down (04:47) reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 - 13:16 (04:56) wtmp begins Sun May 24 13:16:52 2020
查看最近的登录 昨天 到 今天, 跑:
$ last -s yesterday -t today
如果您只想列出自 2021 年 1 月 7 日至今的登录记录,请运行:
$ last -s 2021-01-07 ostechni pts/0 192.168.225.37 Mon Jan 11 06:39 still logged in reboot system boot 5.4.0-59-generic Mon Jan 11 06:37 still running ostechni pts/0 192.168.225.37 Thu Jan 7 08:30 - 13:16 (04:46) ostechni tty1 Thu Jan 7 08:29 - down (04:47) reboot system boot 5.4.0-53-generic Thu Jan 7 08:20 - 13:16 (04:56) wtmp begins Sun May 24 13:16:52 2020
1.8. 显示最后登录用户的完整日期和时间
这 -F
(--fulltimes
) 选项用于显示完整的登录和注销日期和时间 last
命令的输出。
$ last -5 -F
样本输出:
ostechni pts/0 192.168.225.37 Mon Jan 11 06:39:29 2021 still logged in [...]
1.9。 在最后一列显示主机名
这 -a
(--hostlast
) 选项用于最后显示主机名列以防止截断。
$ last -d -a ostechni pts/0 Mon Jan 11 06:39 still logged in ostechnix [...]
1.10。 查看伪用户“reboot”的上次登录记录
正如我前面提到的,最后一个命令保存了一个名为“reboot”和“shutdown”的特殊伪用户的记录。
要查看“reboot”和“shutdown”用户的上次登录详细信息,请使用以下命令:
$ last reboot
$ last shutdown
2. 在 Linux 中使用 lastb 显示失败的登录尝试
这 lastb
和 last
命令,但它只列出所有错误的登录尝试。 它从 /var/log/btmp
文件。
请注意,您的系统仅将信息记录在 btmp
文件(如果存在)。 如果此文件因任何原因不可用,只需使用 touch
命令如下:
$ sudo touch /var/log/btmp
现在我们可以使用 lastb 命令显示失败的登录尝试,如下所示:
$ sudo lastb
样本输出:
UNKNOWN tty1 Mon Jan 11 07:51 - 07:51 (00:00) sk tty1 Mon Jan 11 07:51 - 07:51 (00:00) UNKNOWN tty1 Mon Jan 11 07:51 - 07:51 (00:00) sk tty1 Mon Jan 11 07:51 - 07:51 (00:00) ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00) ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00) ostechni ssh:notty 192.168.225.37 Mon Jan 11 07:49 - 07:49 (00:00) UNKNOWN tty1 Wed Jan 6 10:59 - 10:59 (00:00) btmp begins Wed Jan 6 10:59:57 2021

上述命令列出了 Linux 系统中所有用户的所有不成功登录尝试。 它还显示了通过 SSH 发生的失败登录尝试。
3.在Linux中使用lastlog命令查找最后登录的用户
这 最后日志 命令显示 Linux 和类 Unix 操作系统中所有用户或特定用户的最近登录。 它从以下位置检索上次登录用户的列表 /var/log/lastlog
文件并在标准输出中显示结果。
要显示所有用户的最近登录,请运行:
$ lastlog
样本输出:
Username Port From Latest root **Never logged in** daemon **Never logged in** bin **Never logged in** [...] systemd-coredump **Never logged in** ostechnix tty1 Mon Jan 11 07:51:46 +0000 2021 lxd **Never logged in** dnsmasq **Never logged in** libvirt-qemu **Never logged in** libvirt-dnsmasq **Never logged in** cockpit-ws **Never logged in** cockpit-wsinstance **Never logged in** libvirtdbus **Never logged in** _flatpak **Never logged in** sk pts/0 192.168.225.37 Wed Jan 6 11:02:17 +0000 2021 root **Never logged in** nobody **Never logged in**

正如您在上面的输出中看到的, lastlog
命令显示系统用户帐户以及其他服务帐户的最后登录记录,例如 bin
, daemon
, sys
, mail
, nobody
等等
这 lastlog
命令打印用户登录的登录名、端口、源 IP 地址以及上次登录日期和时间。 如果用户从未登录,它将打印消息 ** Never logged in**
而不是输出中的端口和时间。
您可能想知道为什么有许多服务帐户从未登录。这是因为这些帐户的登录 shell 设置为 /sbin/nologin
. 用于限制对 shell 的直接访问是常见的安全实践。
3.1。 显示特定用户的上次登录详细信息
如果要显示指定用户的lastlog记录,对于 example ostechnix,命令将是:
$ lastlog -u ostechnix
样本输出:
Username Port From Latest ostechnix tty1 Mon Jan 11 07:51:46 +0000 2021
3.2. 显示 X 天之前或最近的上次登录记录
这 lastlog
命令可以显示最近的登录记录早于或最近早于 X 天。
例如,您可以使用 5 天之前获取所有用户的最近登录记录 -b
标志如下:
$ lastlog -b 5
同样,要显示 5 天以上的登录记录,请使用 -t
旗帜:
$ lastlog -t 5
3.3. 在 Linux 中使用 lastlog 删除或清除上次登录信息
如果您不想要用户的 lastlog 记录,只需使用清除它们 -C
(--clear
) 旗帜:
$ sudo lastlog -u ostechnix -C
要验证日志记录是否已清除,请运行:
$ lastlog -u ostechnix Username Port From Latest ostechnix **Never logged in**
获得帮助
有关更多详细信息,请参阅相应命令的帮助部分。
$ last --help
$ lastb --help
$ lastlog --help
或者浏览每个命令的手册页:
$ man last
$ man lastb
$ man lastlog
结论
这 last
, lastb
和 lastlog
命令可以用来检测 Linux 系统中的可疑用户活动。 查找最近登录(或注销)Linux 服务器的人员、他们何时登录以及登录时长等重要细节,这些重要细节肯定会在故障排除时帮助您。
相关阅读:
- 如何在 Linux 中查找当前登录的用户
- 如何在 Linux 中列出所有用户
- 如何在 Linux 中监控用户活动
- 如何限制用户对 Linux 系统的访问