lastlog 命令用于显示用户最近一次成功登录的时间、终端和来源ip,读取二进制文件 /var/log/lastlog,需 root 权限;支持按用户、时间范围筛选,并可重置或清空记录。

lastlog 命令用于显示系统中所有用户最近一次成功登录的时间、终端和来源 IP(如果记录了的话)。它读取 /var/log/lastlog 文件,该文件以二进制格式存储每个 UID 对应的最后登录信息。
查看所有用户的最后登录情况
直接运行以下命令即可列出所有用户(按 UID 排序)及其最后登录信息:
-
sudo lastlog—— 必须使用 root 权限,因为/var/log/lastlog默认仅 root 可读 - 输出包含三列:用户名、登录终端(如
pts/0、tty1)、登录来源(如192.168.1.100或localhost),最后一列是时间(格式类似Wed Mar 15 10:22:34 +0800 2024) - 若某用户从未登录过,对应行会显示 **Never logged in**
筛选特定用户或条件
可以结合选项缩小查看范围:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
sudo lastlog -u username—— 查看指定用户的最后登录记录 -
sudo lastlog -b 7—— 显示 **7 天前及更早** 登录的用户(即“超过 7 天未登录”) -
sudo lastlog -s 30—— 显示 **最近 30 天内** 有登录行为的用户 -
sudo lastlog | grep -v "Never\|**"—— 过滤掉从未登录的用户(文本方式辅助筛选)
注意 lastlog 的限制与前提
该命令依赖系统正确维护 /var/log/lastlog,需确保:
- PAM 模块已启用
pam_lastlog.so(通常默认开启),否则新登录不会写入记录 - 用户账户被删除后,其 lastlog 记录仍保留在文件中,直到手动清理或重建 lastlog
- 某些容器环境或最小化系统可能未生成或保留 lastlog 文件,运行时会提示 No such file or directory
- 时间显示基于系统本地时区,不自动转换为 UTC
补充:重置或清理 lastlog 记录
如需清空某用户的最后登录记录(例如重置审计状态),可执行:
-
sudo lastlog -u username -R—— 清除指定用户的 lastlog 条目 -
sudo truncate -s 0 /var/log/lastlog—— 清空全部记录(慎用,会丢失所有历史登录痕迹)










