lastlog 是 Linux 系统中一个用于查询和显示所有用户最近一次登录信息 的命令。它会读取 /var/log/lastlog 文件,并按用户 UID 排序,输出用户名、登录终端(Port/From)以及最近登录时间。如果一个用户从未登录过,则会显示 **Never logged**。
主要功能与特性
| 特性 | 说明 |
|---|---|
| 数据来源 | 读取 /var/log/lastlog 文件,该文件在每次用户登录时更新。 |
| 显示内容 | 用户名、登录端口/终端(如 pts/0)、来源 IP(如果适用)和最近登录时间。 |
| 排序方式 | 默认按用户 UID 排序显示。 |
| 权限要求 | 通常需要 root 权限 才能执行(普通用户可能无法查看所有用户信息)。 |
与 last 的区别 |
last 命令显示所有登录记录(包括多次登录),而 lastlog 只显示每个用户的最近一次登录。 |
常用命令选项
以下是 lastlog 命令的常用选项及示例:
| 选项 | 说明 | 示例 |
|---|---|---|
| 无选项 | 显示系统中所有用户的最近一次登录信息。 | sudo lastlog |
-u <用户名> |
仅显示指定用户的最近登录信息。 | sudo lastlog -u root |
-t <天数> |
仅显示在指定天数内(以来)有登录的用户。 | sudo lastlog -t 7 |
-b <天数> |
仅显示早于指定天数的登录记录。 | sudo lastlog -b 7 |
-h |
显示帮助信息。 | lastlog -h |
-C(需与 -u 同用) |
清除指定用户的 lastlog 记录(执行后该用户将显示"从未登录过")。 | sudo lastlog -C -u root |
-S(需与 -u 同用) |
将指定用户的 lastlog 记录设置为当前时间。 | sudo lastlog -S -u username |
典型输出示例
执行 sudo lastlog 或 sudo lastlog -u root 的输出格式通常如下:
Username Port From Latest
root pts/0 221.6.45.34 Tue Dec 17 09:40:48 +0800 2013
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
...
这表示用户 root 最近一次从 IP 221.6.45.34 通过终端 pts/0 登录,而系统用户如 bin、daemon 等从未登录过。
使用场景与注意事项
- 安全审计 :系统管理员可以定期运行
lastlog来检查所有用户的最后登录时间,识别长期未活动的账户或异常登录。 - 排查问题 :结合
-t或-b选项,可以快速筛选近期登录或很久未登录的用户。 - 权限注意 :由于涉及系统所有用户信息,通常需要
sudo提权才能获得完整输出。 - 数据重置 :使用
-C选项可以清除某个用户的记录(例如在重置账户状态时),使用-S可以手动更新为当前时间(用于测试或修复记录)。