Contents

Linux中last命令简介

1. 概述

当我们管理一个多用户系统时,我们经常希望获得有关登录活动的详细信息。 在本教程中,我们将通过示例学习如何使用last和 lastb 命令获取登录相关信息。

2. lastlastb简介

** last命令显示有关上次登录用户的信息。**当我们需要跟踪登录活动或调查可能的安全漏洞时,它非常方便和方便。

最后 *命令默认会以系统日志文件/var/log/wtmp*作为数据源生成报告。

wtmp是 linux 操作系统上的二进制文件,用于维护所有登录和注销活动的历史记录。

使用last命令的语法是:

last [options] [username...] [tty...]

** lastb命令与 last 命令相同,只是默认情况下,它会搜索*/var/log/btmp*文件,该文件包含所有错误的登录尝试**

普通用户对*/var/log/btmp*文件没有读取权限:

$ ls -l /var/log/btmp
-rw-rw---- 1 root utmp 1152 Apr  5 00:04 /var/log/btmp

因此,只有root用户可以使用lastb命令获取错误登录尝试的报告。

3. 了解输出

如果我们在没有任何选项的情况下运行last命令,它将生成所有登录历史记录的报告:

$ last
reboot   system boot  5.5.13-arch2-1   Fri Apr 10 08:02   still running
kent     pts/0        192.168.0.63     Tue Apr  7 22:01 - 23:03  (01:02)
reboot   system boot  5.5.8-arch1-1    Tue Mar 10 20:49 - 20:49  (00:00)
kent     pts/5        tmux(6716).%6    Thu Mar 26 18:58 - 19:01 (7+23:02)
root     tty1                          Fri Feb 21 18:45 - down   (00:01)
kent     pts/0        80.242.164.60    Thu Feb 20 11:39 - 11:43  (00:04)
guest    pts/0        192.168.0.63     Sun Jan 26 19:15 - 21:32  (02:17)
kent     pts/2        tmux(2044).%1    Wed Jan  8 22:39 - 01:09  (02:29)
....

现在,让我们看看上面生成的登录报告,并了解每一列的含义:

第 1 列显示登录用户的名称。

第 2 列表示用户如何连接到系统,例如,通过pts(伪终端)tty(电传打字机)。但如果是重新启动活动, 则会显示系统启动。

第 3 列告诉用户从哪里连接。该值可能是:

  • 主机名或 IP 地址——如果用户从远程计算机连接
  • 空值——如果用户通过tty连接
  • 内核版本——如果是重启活动
  • 一些特定于应用程序的值——例如,tmux(6716).%6表示 ProcessName(PID).WindowID

第 4 列报告登录活动发生的时间

第 5 列显示注销时间。它可能是以下值:

  • 时间戳 - 如果用户已注销
  • 仍在运行 -如果系统启动仍在运行
  • 仍然登录- 如果用户仍然登录
  • down – 系统正常关闭
  • crash – 如果*/var/log/wtmp*文件中没有注销条目;这通常意味着系统崩溃

最后一列以*(Hours: Minutes)*的格式告诉我们用户登录了多长时间

4. 限制输出中的行数

多用户系统很可能会在wtmp文件中记录许多登录条目。如果我们只想检查几个最近的登录活动,我们可以使用*-n*选项来限制 last命令的输出中的行:

$ last -n 5
kent     pts/0        192.168.0.63     Sat Apr 11 14:58   still logged in
kent     pts/0        192.168.0.63     Sat Apr 11 12:28 - 14:31  (02:03)
kent     pts/0        192.168.0.63     Sat Apr 11 12:07 - 12:09  (00:02)
kent     pts/0        192.168.0.63     Sat Apr 11 11:59 - 12:01  (00:01)
kent     pts/0        192.168.0.63     Sat Apr 11 11:50 - 11:50  (00:00)
wtmp begins Sun Dec 15 18:56:55 2013

5. 抑制输出中的 IP 地址或主机名列

我们之前已经了解到,last命令输出中的第三列可以包含用户来自何处的信息:IP 地址、主机名或内核版本(如果它是系统引导活动)。

如果我们想隐藏此信息,我们可以使用*-R*选项:

$ last -n 5 -R
kent     pts/0        Sat Apr 11 14:58   still logged in
kent     pts/0        Sat Apr 11 12:28 - 14:31  (02:03)
kent     pts/0        Sat Apr 11 12:07 - 12:09  (00:02)
kent     pts/0        Sat Apr 11 11:59 - 12:01  (00:01)
kent     pts/0        Sat Apr 11 11:50 - 11:50  (00:00)
wtmp begins Sun Dec 15 18:56:55 2013

6.列出特定时间段的登录活动

last命令支持 -s (since) 和*-t* (until) 选项,以便我们可以让它在特定时间段内打印登录条目。

例如,我们可以只获取昨天的登录活动:

$ last -s yesterday -t today
kent     pts/0        192.168.0.63     Fri Apr 10 11:31 - 11:31  (00:00)
wtmp begins Sun Dec 15 18:56:55 2013

-s和 -t选项接受以下时间格式:

  • YYYYMMDDhhmmss – 例如19920808180808
  • YYYY-MM-DD hh:mm:ss – 例如1992-08-08 18:08:08
  • YYYY-MM-DD hh:mm(秒将默认为00
  • YYYY-MM-DD(时间默认为午夜)
  • hh:mm:ss(日期默认为今天)
  • hh:mm(日期默认为今天,秒为00

在 上面last命令的示例中,我们将昨天今天的两个别名传递给*-s-t*选项。别名使命令易于理解。 last命令支持四个别名:

  • 现在
  • 昨天(时间设置为午夜)
  • 今天(时间设置为午夜)
  • 明天(时间设置为午夜)

我们还可以将相对时间传递给 -s或*-t*选项。

例如,如果我们想获取最近五天内的登录活动:

$ last -s -5days
kent     pts/0        192.168.0.63     Sat Apr 11 14:58   still logged in
kent     pts/0        192.168.0.63     Sat Apr 11 12:28 - 14:31  (02:03)
kent     pts/0        192.168.0.63     Sat Apr 11 12:07 - 12:09  (00:02)
...
wtmp begins Sun Dec 15 18:56:55 2013

7. 仅显示特定用户的登录条目

有时我们想调查特定用户的登录活动。为此,我们可以将用户名传递给last命令。

例如,我们要检查用户guest和 root的登录条目:

$ last guest root
guest    tty3                          Sat Apr 11 12:14   still logged in
root     tty2                          Wed Aug 15 23:07 - 23:08  (00:00)
guest    tty2                          Sat Dec 26 00:36 - 00:36  (00:00)
root     tty1                          Sat Apr 19 00:28 - crash  (00:07)
root     pts/2        localhost.locald Thu Mar 20 00:23 - 00:23  (00:00)
root     tty1                          Thu Dec 19 21:42 - down   (00:00)
root     pts/0        192.168.0.103    Sun Dec 15 21:32 - down   (00:02)
root     tty1                          Sun Dec 15 18:57 - down   (02:33)
...
wtmp begins Sun Dec 15 18:56:55 2013

8. 仅显示运行级别更改的条目

我们可以将 -x 选项传递给last命令,以获取运行级别更改的登录条目。例如,系统重启和关机:

$ last -x
reboot   system boot  5.5.8-arch1-1    Thu Mar 26 18:58 - 19:01 (7+23:02)
shutdown system down  5.5.8-arch1-1    Wed Mar 25 20:02 - 20:02  (00:00)
reboot   system boot  5.4.10-arch1-1   Mon Jan 27 20:07 - 21:11  (01:04)
shutdown system down  5.4.10-arch1-1   Mon Jan 27 18:57 - 20:07  (01:09)
reboot   system boot  5.4.10-arch1-1   Sun Jan 12 22:07 - 18:57 (14+20:50)
kent     tty2                          Sun Dec 15 18:24 - down   (00:03)
....
wtmp begins Sun Dec 15 18:56:55 2013

9. 查看错误的登录尝试

我们已经简要讨论了lastb命令。它的工作方式与 last 命令相同。唯一的区别是,lastb命令只列出了失败的登录尝试:

root# lastb
guest    pts/6                         Sat Apr 11 12:11 - 12:11  (00:00)
guest    pts/6                         Sat Apr 11 12:11 - 12:11  (00:00)
guest    pts/6                         Sat Apr 11 12:10 - 12:10  (00:00)
guest    pts/1                         Sun Apr  5 00:04 - 00:04  (00:00)
guest    pts/1                         Sun Apr  5 00:04 - 00:04  (00:00)
guest    pts/1                         Sun Apr  5 00:03 - 00:03  (00:00)
btmp begins Sun Apr  5 00:03:55 2020