last 讀取 /var/log/wtmp 二進位日誌,顯示所有成功登入、登出與系統重啟事件。資料不可竄改 (非文字檔),適合安全稽核、異常登入調查、系統可用性分析。本文詳細說明輸出欄位解讀、常用參數組合與實戰範例。
/var/log/wtmp (二進位,utmp 結構)logrotate 輪轉,通常保留數週至數月/var/log/btmp (失敗登入,lastb 讀取)$ last
user1 pts/0 192.168.1.50 Mon Mar 15 10:30 - 12:45 (02:15)
user2 tty1 - Mon Mar 15 09:15 still logged in
reboot system boot 5.15.0-91 Mon Mar 15 08:00 - 14:30 (06:30)
| 欄位 | 說明 | 範例值 |
|---|---|---|
| 1. 使用者/事件 | 登入帳號、reboot、shutdown | user1, reboot |
| 2. 終端機類型 | pts/N=遠端 (SSH/Telnet)、ttyN=本地主控台、:0=圖形登入 | pts/0, tty1 |
| 3. 來源 IP/主機 | 遠端 IP、主機名、:0.0 (本地圖形)、- (本地文字) | 192.168.1.50, - |
| 4. 登入時間 | 日期 時間 | Mon Mar 15 10:30 |
| 5. 登出時間/狀態 | 時間、still logged in、gone - no logout (異常中斷) | 12:45, still logged in |
| 6. 時長 | (時:分),重啟事件顯示運行時長 | (02:15), (06:30) |
| 參數 | 功能 | 範例 |
|---|---|---|
-n NUM, -NUM | 顯示最近 NUM 筆記錄 | last -10, last -n 5 |
-R | 隱藏來源 IP/主機欄位 | last -R |
-a | 來源 IP/主機移至最後一欄 | last -a |
-F | 顯示完整日期時間 (含秒、年份) | last -F |
-i | IP 以數字格式顯示 (不解析主機名) | last -i |
-d | 對 IP 進行 DNS 反向解析 (預設不解析) | last -d |
-f FILE | 指定讀取檔案 (預設 /var/log/wtmp) | last -f /var/log/wtmp.1 |
-s TIME, -t TIME | 顯示指定時間範圍內記錄 (YYYYMMDDhhmmss) | last -s 20240315000000 -t 20240316000000 |
-p TIME | 顯示指定時間點仍在登入的使用者 | last -p 20240315120000 |
-w | 顯示完整網域名稱 | last -w |
-x | 顯示系統關機/運行等級變更事件 | last -x |
last john
last -n 20 john
last reboot
last -x reboot shutdown
last pts/0
last -s $(date -d '24 hours ago' +%Y%m%d%H%M%S)
# 最近 100 筆,顯示 IP,找出非內網 IP
last -n 100 -i | awk '$3 !~ /^192\.168\.|^10\.|^172\.(1[6-9]|2[0-9]|3[0-1])\./ && $3 != "-" {print}'
# 非工作時間 (22:00-06:00) 登入
last -F | awk '$5 ~ /(2[2-3]|0[0-5]):[0-5][0-9]/ {print}'
last -F | grep -v 'still logged in' | grep -v 'reboot' | \
awk '{user[$1]+=($7*3600+$8*60)} END {for(u in user) print u, user[u]/3600 " hours"}'
cp /var/log/wtmp /backup/wtmp-$(date +%F),防止日誌輪轉遺失歷史。last -F -i 輸出解析送入 Splunk/ELK/Graylog。lastb -n 20 偵測暴力破解。last -n 1 $USER 確認最後活動時間,超過 90 天未登入考慮鎖定。| 現象 | 原因與解決 |
|---|---|
last: /var/log/wtmp: No such file or directory | 日誌尚未建立 (全新系統) 或被誤刪,touch /var/log/wtmp 重建 |
| 顯示 "gone - no logout" | 使用者未正常登出 (關機、網路斷線、進程被殺),非正常登出 |
| 時間顯示錯誤 | 系統時區設定錯誤,timedatectl set-timezone Asia/Taipei |
| 無法看到最近登入 | wtmp 輪轉已歸檔,使用 last -f /var/log/wtmp.1 讀取舊檔 |
last 是 Linux 內建、零依賴的登入稽核利器。掌握 -n/-F/-i/-s/-t 參數組合,配合 awk/grep 即可完成:異常 IP 偵測、非工作時間登入、重啟頻率分析、使用者活躍度統計等安全運營核心任務。
解決 Ubuntu 在 VirtualBox 安裝後重啟異常的兩大方案
crontab 定時任務完整指南:系統/使用者排程、編寫格式、權限控管、實戰範例
Ubuntu 命令行調節屏幕亮度:xgamma 與 setpci 兩大核心方案
RedHat 6.5 網卡常見問題解決:Auto_eth0 改名 eth0、70-persistent-net.rules 同步、NetworkManager 衝突
Linux 讀取 MBR 引導區資訊:dd 備份與 hexdump 解析分區表
CentOS 透過 yum 安裝 jwhois 套件以支援 whois 域名查詢指令