上一篇 下一篇 分享链接 返回 返回顶部

如何在Linux服务器中查找最后登录的用户?

发布人:Minchunlin 发布时间:2021-01-18 11:22 阅读量:2294

在本教程中,我们将通过实例来看看如何在Linux服务器中使用last、lastb和lastlog命令查找最后登录的用户。

作为一个Linux服务器系统管理员,你应该定期检查Linux服务器中用户的登录日期和时间。它可以为你提供一些有用的细节,比如有多少用户是活跃的,有多少用户是不活跃的,他们什么时候登录,登录了多久等等。如果有些用户账户已经很久没有使用了,如果不再需要,你可以简单地锁定它们。你也可以在审计Linux服务器时使用最后的登录日期,调查是哪个用户造成的问题。幸运的是,GNU/Linux操作系统包含了last、lastb和lastlog这三个命令来显示最近用户的登录日期。

1. 用last命令显示Linux中最后登录的用户列表

顾名思义,last命令是用来查看Linux和类似Unix系统中最后登录的用户。它读取/var/log/wtmp文件,并查找自该文件创建以来所有已登录以及已注销的用户。你也可以列出特定用户最近的登录日期,甚至可以借助last命令找到谁重新启动了Linux系统。

请注意,你的系统只记录wtmp文件中的信息。如果这个文件由于任何原因不可用,只需使用 touch 命令创建它,如下所示。

$ sudo touch /var/log/wtmp

现在让我们用last命令找出最近的登录日期和时间。

要显示你的Linux系统中的最好登录的用户,以及持续时间和其他信息,只需运行:

$ last

如将输出中看到的,last命令显示了最近登录的以下详细信息:

第一竖行:用户名。如果仍然有任何用户登录,它也会显示该详细信息。

第二竖行:进行会话的终端设备的类型(例如tty或pts)。

第三竖行:用户登录的源IP地址或主机名。

第四竖行:登录日期和时间戳(即登录会话的开始和停止时间)。

第五竖行:会话的总时长。

最后一行表示wtmp日志文件中最早记录的会话的日期和时间。

在上面的输出中,你可能已经注意到,有一个名为reboot的特殊用户的登录条目。last命令保留了这个用户每次开机时的记录。

当我们运行last不带任何选项的命令时,它将显示整个日志输出。它有许多选项可以根据您的喜好过滤,格式化和限制输出。我提供了一些最常见选项的示例。

1.1、将输出限制为特定用户

如前所述,该last命令列出了wtmp文件中记录的所有最近的登录信息。如果要显示特定用户的最近登录名(即查看特定用户的所有登录名),例如a5idc,则命令为:

$ last a5idc

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

$ last a5idc sk

1.2、将输出限制为特定的tty或pts

该last命令保留进行会话的终端设备的类型(例如tty或pts)的记录。

举例来说,用户可能已经在本地或通过ssh登录到Linux服务器。如果要将输出限制为specific tty,只需运行:

$ last tty1

ttys的名称可以缩写。例如,您可以运行last 1而不是last tty1。

同样,要仅列出pts会话的登录名,请运行:

$ last pts/0

您还可以使用ttys指定多个用户名,如下所示:

$ last a5idc sk pts/0 tty1

1.3、将输出限制为特定的行数

该wtmp日志文件可能有大量条目。如果要将last命令的输出限制为一定的行数,请使用-n如下所示的标志:

$ last -n 5

或者

$ last -5

上面的命令将仅在输出中显示5行。

1.4、显示主机名而不是IP地址

缺省情况下,last命令显示用户登录的源IP。如果要显示主机名而不是IP地址,请使用-d(或--dns)选项:

$ last -d -5

您还可以使用-w(或--fullnames)选项在输出中显示完整的用户名和域名。

1.5、隐藏主机名和IP地址

要取消显示主机名或IP字段,请使用-R选项。

$ last -5 -R

1.6、显示特定时间的用户登录记录

该-p(或--present)选项是用来寻找谁是在目前或在指定的时间登录。

例如,运行以下命令列出今天8:30的最后登录用户:

$ last -p 08:30

要列出当前登录的用户(即在运行此命令时),请运行:

$ 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

要查看从昨天到今天的最近登录,请运行:

$ last -s yesterday -t today

如果您只想列出2021年1月7日至今的登录记录,请运行:

$ last -s 2021-01-07

1.8、显示具有完整日期和时间的最后登录用户

在-F(--fulltimes)选项用于显示在全登录和注销日期和时间last命令的输出。

$ last -5 -F

1.9、在最后一列显示主机名

在-a(--hostlast)选项用于显示上次防止截断的主机名的列。

$ last -d -a

1.10、查看伪用户“重新启动”的最后登录记录

如前所述,最后一条命令保留了一个名为“ reboot”和“ shutdown”的特殊伪用户的记录。

要查看“重新启动”和“关闭”用户的最后登录详细信息,请使用以下命令:

$ last reboot

$ last shutdown

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

该lastb是一样last的命令,但只列出了所有的坏的登录尝试。它从/var/log/btmp文件中获取失败的登录详细信息。

请注意,您的系统仅在btmp文件中记录信息(如果存在)。如果由于某种原因该文件不可用,只需使用touch以下命令创建它:

$ sudo touch /var/log/btmp

现在,我们可以使用lastb命令显示失败的登录尝试,如下所示:

$ sudo lastb

上面的命令列出了Linux系统中所有用户的所有未成功登录尝试。它还显示通过SSH失败的登录尝试。

3、使用lastlog命令查找Linux中最后登录的用户

该lastlog的命令将显示所有用户,或者在Linux和特定用户的类Unix操作系统的最新登录。它从/var/log/lastlog文件中检索上次登录的用户列表,并将结果显示在标准输出中。

要显示所有用户的最新登录信息,请运行:

$ lastlog

正如你在上面的输出中看到,lastlog命令显示系统用户的上次登录的记录账户以及其他账户服务,如bin,daemon,sys,mail,nobody等。

该lastlog命令显示用户登录的登录名,端口,源IP地址以及上次登录的日期和时间。如果用户从未登录过,它将打印消息,** Never logged in**而不是输出中的端口和时间。

您可能想知道为什么有许多服务帐户从未登录过。这是因为这些帐户的登录外壳设置为/sbin/nologin。这是用于限制直接访问外壳程序的常见安全实践。

3.1、显示特定用户的上次登录详细信息

如果要显示指定用户的lastlog记录,例如a5idc,则命令为:

$ lastlog -u a5idc

3.2、显示X天之前或最近的最近登录记录

该lastlog命令可以显示X天之前或最近X天之前的最新登录记录。

例如,您可以使用-b以下标记获得5天之前所有用户的最近登录记录:

$ lastlog -b 5

同样,要显示最近5天以上的登录记录,请使用-t标志:

$ lastlog -t 5

3.3、在Linux中使用lastlog删除或清除最后的登录信息

如果您不想记录用户的lastlog记录,只需使用-C(--clear)标志清除它们:

$ sudo lastlog -u a5idc -C

要验证是否清除了日志记录,请运行:

$ lastlog -u a5idc

获得帮助

有关更多详细信息,请参阅相应命令的帮助部分。

$ last --help

$ lastb --help

$ lastlog --help

或浏览每个命令的手册页:

$ man last

$ man lastb

$ man lastlog

last,lastb和lastlog命令来救援,检测在Linux系统中可疑的用户活动。查找谁最近登录(或从Linux服务器登出),他们什么时候登录以及重要的详细信息肯定能在故障排除时为您提供帮助。