在本教程中,我们将看到如何使用 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
每次计算机启动时,command 都会保留该用户的记录。
当我们跑 last
命令没有任何选项,它将显示整个日志输出。 它有许多选项可以根据您的喜好过滤、格式化和限制输出。 我已经包含了最常见选项的示例。
1.1. 限制输出到特定用户
如前所述, last
命令列出所有最近登录记录在 wtmp
文件。 例如,如果要显示特定用户的最近登录(即查看特定用户的所有登录),例如 骨科,命令将是:
$ 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)。
例如,用户可能已在本地或通过 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
) 选项用于查找当前或指定时间登录的用户。
例如,运行以下命令列出今天 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
选项用于显示指定时间之前的登录状态。
例如,如果您想显示从 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. 使用 lastlog 命令在 Linux 中查找上次登录的用户
这 最后记录 命令显示 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记录,例如 骨科,命令将是:
$ lastlog -u ostechnix
示例输出:
Username Port From Latest ostechnix tty1 Mon Jan 11 07:51:46 +0000 2021
3.2. 显示 X 天之前或最近的最后登录记录
这 lastlog
命令可以显示X天之前或之后最近的登录记录。
例如,您可以使用 -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 系统的访问
查找上次登录用户lastlastblastlogLinux 管理Linux 基础Linux 命令Linux 提示Linux 用户管理