如何在 Linux 中查找上次登录的用户

在本教程中,我们将看到如何使用 Linux 查找上次登录的用户 last, lastblastlog 命令与示例。

作为 Linux 系统管理员,您应该定期检查 Linux 服务器中用户的登录日期和时间。 它为您提供了一些有用的详细信息,例如有多少用户处于活动状态,有多少用户处于非活动状态以及他们何时登录以及登录时间等。如果某些用户帐户长时间未使用,您可以简单地锁定它们如果不再需要它们。 您还可以在审核 Linux 服务器时使用上次登录日期并调查可能导致问题的用户。 幸运的是,GNU/Linux 操作系统包含三元组命令,即 last, lastblastlog 显示最近用户的登录日期。

内容

  1. 1. 使用 last 命令显示 Linux 中最后登录的用户列表
    1. 1.1. 限制输出到特定用户
    2. 1.2. 将输出限制为特定的 tty 或 pts
    3. 1.3. 将输出限制为特定的行数
    4. 1.4. 显示主机名而不是 IP 地址
    5. 1.5. 隐藏主机名和 IP 地址
    6. 1.6. 显示特定时间的用户登录记录
    7. 1.7. 显示特定时间间隔内的登录用户
    8. 1.8. 显示上次登录用户的完整日期和时间
    9. 1.9. 在最后一列显示主机名
    10. 1.10. 查看伪用户“rebo​​ot”上次登录记录
  2. 2. 在 Linux 中使用 lastb 显示失败的登录尝试
  3. 3. 使用 lastlog 命令在 Linux 中查找上次登录的用户
    1. 3.1. 显示特定用户上次登录的详细信息
    2. 3.2. 显示 X 天之前或最近的最后登录记录
    3. 3.3. 在 Linux 中使用 lastlog 删除或清除上次登录信息
      1. 获得帮助

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
使用 last 命令列出 Linux 中上次登录的用户

正如您在上面的输出中看到的,最后一个命令显示了最近登录的以下详细信息:

  • 用户名。 如果任何用户仍然登录,它也会显示该详细信息。
  • 发生会话的终端设备的类型(例如 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 命令显示特定用户的最近登录信息

您还可以使用逗号分隔指定多个用户名,如下所示:

$ 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-072021-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. 查看伪用户“rebo​​ot”上次登录记录

正如我之前提到的,最后一个命令保留了一个名为“rebo​​ot”和“shutdown”的特殊伪用户的记录。

要查看“rebo​​ot”和“shutdown”用户的上次登录详细信息,请使用以下命令:

$ last reboot
$ last shutdown

2. 在 Linux 中使用 lastb 显示失败的登录尝试

lastblast 命令,但它只列出所有错误的登录尝试。 它从失败的登录详细信息中获取 /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 中使用 lastb 命令显示失败的登录尝试在 Linux 中使用 lastb 命令显示失败的登录尝试

以上命令列出了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 命令在 Linux 中查找上次登录的用户使用 lastlog 命令在 Linux 中查找上次登录的用户

正如你在上面的输出中看到的, 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, lastblastlog 救援命令用于检测 Linux 系统中的可疑用户活动。 查找谁最近登录(或退出)Linux 服务器、他们何时登录以及登录时间是重要的详细信息,这些详细信息肯定会在故障排除时为您提供帮助。

相关阅读:

  • 如何在 Linux 中查找当前登录的用户
  • 如何在 Linux 中列出所有用户
  • 如何在 Linux 中监控用户活动
  • 如何限制用户对 Linux 系统的访问

查找上次登录用户lastlastblastlogLinux 管理Linux 基础Linux 命令Linux 提示Linux 用户管理