1.命令简介
last 是 Linux 系统中用于查看用户登录历史记录的核心命令。它通过读取 /var/log/wtmp 这个二进制日志文件,向管理员展示谁在何时、从何处登录了系统,以及登录会话持续了多久。
数据来源与原理
- 数据源:/var/log/wtmp。这是一个二进制文件,不能用 cat 或 vim 直接查看,必须用 last 解析。
- 记录内容:每次用户登录(登录/退出)、系统重启(reboot)以及运行级别变更(runlevel)时,系统都会向该文件追加一条记录。
- 轮转机制:为防止文件无限增大,系统会进行日志轮转。通常你会看到 wtmp.1、wtmp.2.gz 等历史压缩包。last 默认只读取当前的 wtmp,但可以通过 -f 参数指定读取历史文件。
2.语法
bash
last [options] [username...] [tty...]
参数说明
options:
- -R 省略主机名 hostname 的列
- -a 把从何处登入系统的主机名称或IP地址显示在最后一行。
- -d 将IP地址转换成主机名称。
- -f<记录文件> 指定记录文件。
- -n<显示行数>或-<显示行数> 显示名单的行数。
- -R 不显示登入系统的主机名称或IP地址。
- -x 显示系统关机,重新开机,以及执行等级的改变等信息。
username:
- username: 显示指定用户 username 的登录信息。
tty:
- tty 设置登录的终端,tty 的名称可以缩写, last 0 与 last tty0 相同。
3.实例
显示两行,并省略主机名 hostname 的列:
bash
# last -R -2
root pts/0 Thu Apr 28 18:06 still logged in
root pts/0 Tue Apr 26 09:06 - 19:36 (10:30)
wtmp begins Sun Apr 3 13:11:25 2022
显示两行,并省略主机列:
bash
~# last -R -2
root pts/0 Thu Apr 28 18:06 still logged in
root pts/0 Tue Apr 26 09:06 - 19:36 (10:30)
wtmp begins Sun Apr 3 13:11:25 2022
一般显示方法:
bash
# last
...
root pts/4 Thu May 13 17:25 still logged in
root pts/2 Thu May 13 17:23 - 17:25 (00:02)
root pts/1 Thu May 13 16:46 still logged in
...
简略显示,并指定显示的个数:
bash
# last -n 5 -R
root pts/4 Thu May 13 17:25 still logged in
root pts/2 Thu May 13 17:23 - 17:25 (00:02)
root pts/1 Thu May 13 16:46 still logged in
root pts/7 Thu May 13 15:36 still logged in
root pts/9 Thu May 13 15:35 still logged in
wtmp begins Thu May 13 18:55:40 2014
显示最后一列显示主机 IP 地址:
bash
# last -n 5 -a -i
root pts/4 Thu May 13 17:25 still logged in 192.168.1.10
root pts/2 Thu May 13 17:23 - 17:25 (00:02) 192.168.1.10
root pts/1 Thu May 13 16:46 still logged in 192.168.1.10
root pts/7 Thu May 13 15:36 still logged in 192.168.1.10
root pts/9 Thu May 13 15:35 still logged in 192.168.1.10
wtmp begins Thu May 13 18:55:40 2014
4.安全与权限须知
- 权限要求:普通用户执行 last 可以看到所有用户的登录记录(通常默认允许),但 lastb 可能需要 sudo 权限。
- 日志篡改:特别注意,黑客如果有 root 权限,可以使用 shred 或 echo > /var/log/wtmp 清空日志,甚至使用 utmpdump 工具篡改时间戳。因此,last 的结果仅作为参考依据,真正的安全审计建议结合 syslog 服务器或堡垒机日志。
5.快速记忆口诀
last 看历史,wtmp 是根基;
-n 控行数,-x 看重启;
-s 和 -t 切时间,-i 显 IP 防欺骗;
配合 lastb 查爆破,安全审计不跑偏。