浅谈Linux的last命令

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 查爆破,安全审计不跑偏。

参考:Linux last 命令 | 菜鸟教程

相关推荐
特立独行的猫A4 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
无奈笑天下6 小时前
银河麒麟上nproc命令教程详解
linux·运维·服务器
Rabitebla10 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
火云代理10 小时前
更换网络后为什么会退出登录?分清 IP、Cookie 与会话的关系
服务器·网络·网络协议·tcp/ip·php·ip
威嵌神州10 小时前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存
budingxiaomoli11 小时前
Spring统一功能处理
java·后端·spring
Flynn Liang12 小时前
可观测性与成本治理:一次对话的 17 个观测点
java·langchain·可观测性·micrometer·langchain4j·token 成本·llm 监控
金銀銅鐵13 小时前
带您看懂字节码指令(三):同一行加法,为什么有四种指令
java·jvm
火云代理13 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖14 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习