Categories: Linux

Linux 使用 last 指令檢查使用者登入記錄教學與範例

介紹如何在 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"

不顯示來源主機 IP 位址

如果不希望 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

參考資料:GeeksforGeeks鳥哥的 Linux 私房菜

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago