介紹如何在 Linux 系統中使用 last
指令檢查使用者登入系統的記錄。
Linux 的 last
指令是一個可以用來查詢使用者登入系統記錄的工具,它會從系統的 /var/log/wtmp
記錄檔中取得個使用者的登入記錄,並顯示符合條件的資料。
直接執行 last
會列出目前 /var/log/wtmp
記錄檔中所有的使用者登入記錄:
# 列出使用者登入記錄
last
ubuntu pts/0 42.74.231.202 Tue Dec 8 19:39 still logged in office pts/0 192.168.97.45 Tue Dec 8 10:47 - 11:45 (00:58) office pts/0 192.168.97.45 Tue Dec 8 10:20 - 10:47 (00:26) office pts/0 192.168.97.45 Tue Dec 8 10:11 - 10:13 (00:02) office pts/0 192.168.97.45 Tue Dec 8 10:05 - 10:07 (00:01) office pts/0 192.168.97.60 Tue Dec 8 09:55 - 09:56 (00:01) ubuntu pts/0 42.74.54.139 Mon Dec 7 19:03 - 19:05 (00:02) ubuntu pts/0 42.74.54.139 Mon Dec 7 18:49 - 19:02 (00:12) office pts/0 192.168.99.48 Mon Dec 7 13:33 - 15:30 (01:56) office pts/0 192.168.97.35 Mon Dec 7 10:14 - 11:41 (01:27) ubuntu pts/0 42.74.54.139 Sun Dec 6 15:43 - 15:58 (00:15) ubuntu pts/3 42.74.54.139 Sun Dec 6 15:05 - 15:10 (00:04) ubuntu pts/0 42.74.54.139 Sun Dec 6 15:05 - 15:21 (00:16) office pts/0 192.168.97.32 Tue Dec 1 13:24 - 13:55 (00:31) office pts/0 192.168.97.31 Tue Dec 1 09:51 - 09:52 (00:00) wtmp begins Tue Dec 1 09:51:44 2020
若只要查閱指定使用者的登入紀錄,可以直接在參數中指定使用者名稱:
# 列出 ubuntu 使用者登入記錄
last ubuntu
ubuntu pts/0 42.74.231.202 Tue Dec 8 19:39 still logged in ubuntu pts/0 42.74.54.139 Mon Dec 7 19:03 - 19:05 (00:02) ubuntu pts/0 42.74.54.139 Mon Dec 7 18:49 - 19:02 (00:12) ubuntu pts/0 42.74.54.139 Sun Dec 6 15:43 - 15:58 (00:15) ubuntu pts/3 42.74.54.139 Sun Dec 6 15:05 - 15:10 (00:04) ubuntu pts/0 42.74.54.139 Sun Dec 6 15:05 - 15:21 (00:16) wtmp begins Tue Dec 1 09:51:44 2020
若只需要查看最近幾筆使用者登入的記錄,可以使用 -n
參數指定要顯示的記錄筆數:
# 列出最近 5 筆使用者登入記錄 last -n 5
ubuntu pts/0 42.74.231.202 Tue Dec 8 19:39 still logged in office pts/0 192.168.97.45 Tue Dec 8 10:47 - 11:45 (00:58) office pts/0 192.168.97.45 Tue Dec 8 10:20 - 10:47 (00:26) office pts/0 192.168.97.45 Tue Dec 8 10:11 - 10:13 (00:02) office pts/0 192.168.97.45 Tue Dec 8 10:05 - 10:07 (00:01) wtmp begins Tue Dec 1 09:51:44 2020
亦可直接以數字參數指定要顯示的記錄筆數:
# 列出最近 5 筆使用者登入記錄 last -5
若要查詢特定時間的登入記錄,可以使用 -s
參數來指定起始時間點、使用 -t
參數來指定結束時間點,以下是一些範例:
# 顯示從今天 16:30:00 到今天 20:30:50 的登入記錄 last -s "16:30:00" -t "20:30:50" # 顯示從 2020/10/01 16:30:00 到 2020/11/12 03:45:30 的登入記錄 last -s "2020-10-01 16:30:00" -t 2020-11-12 "2020-11-12 03:45:30" # 顯示從 2020/10/01 00:00:00 到 2020/11/12 00:00:00 的登入記錄 last -s 2020-10-01 -t 2020-11-12 # 顯示最近 7 天的登入記錄 last -s -7days # 顯示兩天以前的登入記錄 last -t -2days
若要查詢某個特定時間點的登入記錄則可用 -p
指定時間點。
# 顯示 2020/10/01 16:30:00 這個時間點的登入記錄 last -p "2020/10/01 16:30:00"
如果不希望 last
顯示每筆登入記錄的來源主機 IP 位址,可以加上 -R
參數:
# 不顯示來源主機 IP 位址 last -R
ubuntu pts/0 Tue Dec 8 19:39 still logged in office pts/0 Tue Dec 8 10:47 - 11:45 (00:58) office pts/0 Tue Dec 8 10:20 - 10:47 (00:26) office pts/0 Tue Dec 8 10:11 - 10:13 (00:02) office pts/0 Tue Dec 8 10:05 - 10:07 (00:01) wtmp begins Tue Dec 1 09:51:44 2020
若要同時顯示使用者登入與登出的時間,可以加上 -F
參數:
# 顯示登入與登出時間 last -F
ubuntu pts/0 42.74.231.202 Tue Dec 8 19:39:01 2020 still logged in office pts/0 192.168.97.45 Tue Dec 8 10:47:15 2020 - Tue Dec 8 11:45:40 2020 (00:58) office pts/0 192.168.97.45 Tue Dec 8 10:20:22 2020 - Tue Dec 8 10:47:09 2020 (00:26) office pts/0 192.168.97.45 Tue Dec 8 10:11:06 2020 - Tue Dec 8 10:13:32 2020 (00:02) office pts/0 192.168.97.45 Tue Dec 8 10:05:56 2020 - Tue Dec 8 10:07:51 2020 (00:01) office pts/0 192.168.97.60 Tue Dec 8 09:55:01 2020 - Tue Dec 8 09:56:19 2020 (00:01) ubuntu pts/0 42.74.54.139 Mon Dec 7 19:03:03 2020 - Mon Dec 7 19:05:56 2020 (00:02) ubuntu pts/0 42.74.54.139 Mon Dec 7 18:49:51 2020 - Mon Dec 7 19:02:22 2020 (00:12) office pts/0 192.168.99.48 Mon Dec 7 13:33:42 2020 - Mon Dec 7 15:30:36 2020 (01:56) office pts/0 192.168.97.35 Mon Dec 7 10:14:52 2020 - Mon Dec 7 11:41:52 2020 (01:27) ubuntu pts/0 42.74.54.139 Sun Dec 6 15:43:33 2020 - Sun Dec 6 15:58:44 2020 (00:15) ubuntu pts/3 42.74.54.139 Sun Dec 6 15:05:38 2020 - Sun Dec 6 15:10:02 2020 (00:04) ubuntu pts/0 42.74.54.139 Sun Dec 6 15:05:02 2020 - Sun Dec 6 15:21:58 2020 (00:16) office pts/0 192.168.97.32 Tue Dec 1 13:24:20 2020 - Tue Dec 1 13:55:25 2020 (00:31) office pts/0 192.168.97.31 Tue Dec 1 09:51:44 2020 - Tue Dec 1 09:52:03 2020 (00:00) wtmp begins Tue Dec 1 09:51:44 2020
若要透過 DNS 伺服器自動查詢每個登入來源主機的主機名稱,可以加上 -d
參數,而由於某些完整的主機名稱可能會比較長,通常建議搭配 -a
參數將主機名稱的欄位移到最後一欄,可避免欄位寬度不足無法顯示完整主機名稱的問題。
# 顯示主機名稱 last -ad
last
預設會從 /var/log/wtmp
這個記錄檔案取得使用者登入的資料,但是因為系統的 logrotate
會將記錄檔定期轉存或銷毀,所以有些舊的資料在預設的記錄檔案中會查不到,此時就可以用 -f
參數指定要查詢的記錄檔案路徑:
# 指定記錄檔案 last -f /var/log/wtmp.1