Linux中last命令简介
1. 概述
当我们管理一个多用户系统时,我们经常希望获得有关登录活动的详细信息。 在本教程中,我们将通过示例学习如何使用last和 lastb 命令获取登录相关信息。
2. last和lastb简介
** 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