如何在 Linux 中查找最後登錄的用戶


本教程將向您展示如何使用 Linux 查找上次登錄的用戶。 last, lastb 什麼時候 lastlog 命令和示例。

Linux 系統管理員應該定期檢查用戶何時登錄到他們的 Linux 服務器。它顯示了有用的詳細信息,例如有多少用戶處於活動狀態,有多少用戶處於非活動狀態,以及他們登錄的時間和時長。如果某些用戶帳戶長時間未使用,則可以在不再需要時簡單地將其鎖定。您還可以在審核 Linux 服務器時使用上次登錄日期來調查可能導致問題的用戶。幸運的是,GNU/Linux 操作系統包括三個命令。 last, lastb 什麼時候 lastlog 顯示用戶上次登錄的日期。

內容

  1. 1.使用last命令列出Linux上最後登錄的用戶。
    1. 1.1. 限制特定用戶的輸出
    2. 1.2. 限制輸出到特定的 tty 或 pt
    3. 1.3. 限制輸出到一定的行數
    4. 1.4. 顯示主機名而不是 IP 地址
    5. 1.5. 隱藏主機名和 IP 地址
    6. 1.6. 查看用戶特定時間的登錄記錄
    7. 1.7. 顯示特定時間段內登錄的用戶
    8. 1.8. 顯示上次登錄用戶的完整日期和時間
    9. 1.9. 在最後一列顯示主機名
    10. 1.10. 顯示偽用戶’reboot’的上次登錄記錄
  2. 2. 在 Linux 上使用 lastb 查看失敗的登錄嘗試。
  3. 3. 在Linux 上使用lastlog 命令查找最後登錄的用戶。
    1. 3.1. 查看特定用戶的上次登錄詳細信息
    2. 3.2. 查看X天前或最近的上次登錄記錄
    3. 3.3. 在 Linux 上使用 lastlog 刪除或清除上次登錄信息
      1. 得到幫助

1.使用last命令列出Linux上最後登錄的用戶。

顧名思義, last 使用該命令在 Linux 和類 Unix 系統上顯示最後登錄的用戶。那是 /var/log/wtmp 創建一個文件並查找自該文件創建以來登錄和註銷的所有用戶。您還可以列出特定用戶的最近登錄日期。 誰重啟了Linux系統 在…的幫助下 last 命令。

請注意系統只記錄信息 wtmp 文檔。如果由於某種原因此文件不可用,請使用以下命令創建它: touch 命令是:

$ sudo touch /var/log/wtmp

讓我們檢查一下上次登錄的日期和時間 last 命令。

要查看 Linux 系統的上次登錄、登錄時間等信息,只需運行以下命令即可:

$ last

示例輸出:

ostechni pts/0        192.168.225.37   Thu Jan  7 08:30   still logged in
ostechni tty1                          Thu Jan  7 08:29   still logged in
reboot   system boot  5.4.0-53-generic Thu Jan  7 08:20   still running
reboot   system boot  5.4.0-48-generic Fri Nov 20 10:13 - 11:44  (01:31)
.
.
.
reboot   system boot  5.4.0-33-generic Wed Jul  8 08:49 - 11:41  (02:52)
ostechni web console                   Mon Jul  6 08:19 - 08:20  (00:00)
ostechni pts/2        192.168.225.37   Mon Jul  6 08:14 - 08:30  (00:15)
ostechni pts/0        192.168.225.37   Mon Jul  6 07:41 - 12:27  (04:45)
reboot   system boot  5.4.0-33-generic Mon Jul  6 07:21 - 12:27  (05:06)
ostechni pts/3        192.168.225.37   Sat Jul  4 12:01 - 12:12  (00:10)
ostechni pts/2        192.168.225.37   Sat Jul  4 11:14 - 13:01  (01:46)
ostechni pts/0        192.168.225.37   Sat Jul  4 07:55 - 13:01  (05:05)
reboot   system boot  5.4.0-33-generic Sat Jul  4 07:53 - 13:03  (05:09)
ostechni tty1                          Fri May 29 10:07 - down   (00:00)
reboot   system boot  5.4.0-33-generic Fri May 29 10:06 - 10:07  (00:01)
ostechni pts/0        192.168.225.37   Fri May 29 09:36 - 10:06  (00:29)
ostechni tty1                          Fri May 29 09:36 - down   (00:29)
reboot   system boot  5.4.0-31-generic Fri May 29 09:35 - 10:06  (00:30)
ostechni tty1                          Sun May 24 13:17 - down   (00:02)
reboot   system boot  5.4.0-31-generic Sun May 24 13:16 - 13:20  (00:03)

wtmp begins Sun May 24 13:16:52 2020
使用 last 命令列出 Linux 上最後登錄的用戶

從上面的輸出中可以看出,最後一個命令提供了有關最近登錄的以下詳細信息:

  • 用戶名。如果用戶仍處於登錄狀態,還會顯示詳細信息。
  • 會話發生的終端設備類型(例如 tty 或 pts)。
  • 用戶登錄的源 IP 地址或主機名。
  • 登錄日期和時間戳(即登錄會話開始和停止的時間)。
  • 總會話時間。
  • 最後一行給出最早記錄會話的日期和時間 wtmp 日誌文件。

您可能已經註意到在上面的輸出中有一個特殊的用戶登錄條目,名為: reboot.這個 last 每次計算機啟動時,該命令都會記錄該用戶。

當我們跑步時 last 運行不帶選項的命令會顯示整個日誌輸出。它有許多選項可以根據您的喜好過濾、格式化和限制輸出。我已經包含了最常見選項的示例。

1.1. 限制特定用戶的輸出

正如剛才提到的, last 列出所有最近登錄記錄的命令 wtmp 文檔。例如,如果您想顯示特定用戶最近的登錄(即顯示特定用戶的所有登錄): 骨科,命令將是:

$ last ostechnix

示例輸出:

ostechni pts/0        192.168.225.37   Thu Jan  7 08:30   still logged in
ostechni tty1                          Thu Jan  7 08:29   still logged in
ostechni pts/0        192.168.225.37   Wed Jan  6 11:02 - 13:31  (02:28)
[...]
使用last命令顯示特定用戶的最後登錄信息

您還可以指定多個用逗號分隔的用戶名,如下所示:

$ last ostechnix sk

1.2. 限制輸出到特定的 tty 或 pt

這個 last 此命令記錄發生會話的終端設備類型(tty、pts 等)。

例如,用戶可以在本地或通過 ssh 登錄到 Linux 機器。如果你想將輸出限制為特定的東西 tty,無論如何運行:

$ last tty1

示例輸出:

ostechni tty1                          Thu Jan  7 08:29   still logged in
ostechni tty1                          Wed Jan  6 11:00 - down   (02:31)
ostechni tty1                          Fri Nov 20 11:52 - down   (00:38)
[...]

tty 名稱可以省略。例如你可以運行 last 1 交換 last tty1.

同樣,僅列出 pts 會話登錄,運行:

$ last pts/0
ostechni pts/0        192.168.225.37   Thu Jan  7 08:30   still logged in
ostechni pts/0        192.168.225.37   Wed Jan  6 11:02 - 13:31  (02:28)
sk       pts/0        192.168.225.37   Wed Jan  6 11:02 - 11:02  (00:00)
[...]

您還可以使用 ttys 指定多個用戶名,如下所示:

$ last ostechnix sk pts/0 tty1

1.3. 限制輸出到一定的行數

這個 wtmp 日誌文件可能包含許多條目。如果你想限制輸出 last 排序並使用最多一定數量的行 -n 標誌是:

$ last -n 5

再次,

$ last -5

上面的命令只顯示了 5 行輸出。

ostechni pts/0        192.168.225.37   Thu Jan  7 08:30   still logged in
ostechni tty1                          Thu Jan  7 08:29   still logged in
reboot   system boot  5.4.0-53-generic Thu Jan  7 08:20   still running
ostechni pts/0        192.168.225.37   Wed Jan  6 11:02 - 13:31  (02:28)
sk       pts/0        192.168.225.37   Wed Jan  6 11:02 - 11:02  (00:00)

wtmp begins Sun May 24 13:16:52 2020

1.4. 顯示主機名而不是 IP 地址

默認, last 命令 show user record it’s source ip 。 如果要顯示主機名而不是 IP 地址, -d (還 --dns) 選項:

$ last -d -5

您還可以在輸出中看到完整的用戶名和域名 -w (還 --fullnames) 可選的。

1.5. 隱藏主機名和 IP 地址

要抑制主機名或 IP 字段,請使用: -R 選項。

$ last -5 -R

示例輸出:

ostechni pts/0        Thu Jan  7 08:30   still logged in
ostechni tty1         Thu Jan  7 08:29   still logged in
reboot   system boot  Thu Jan  7 08:20   still running
ostechni pts/0        Wed Jan  6 11:02 - 13:31  (02:28)
sk       pts/0        Wed Jan  6 11:02 - 11:02  (00:00)

wtmp begins Sun May 24 13:16:52 2020

1.6. 查看用戶特定時間的登錄記錄

這個 -p (還 --present) 選項用於搜索當前登錄或在指定時間登錄的用戶。

例如,運行以下命令以列出今天 8:30 上次登錄的用戶。

$ last -p 08:30

示例輸出:

ostechni tty1                          Thu Jan  7 08:29   still logged in
reboot   system boot  5.4.0-53-generic Thu Jan  7 08:20   still running

wtmp begins Sun May 24 13:16:52 2020

要列出當前登錄的用戶(即,在運行此命令時,請運行:

$ last -p now
查找在特定時間登錄的用戶查找在特定時間登錄的用戶

1.7. 顯示特定時間段內登錄的用戶

這個 last 該命令有兩個選項。 -s (--since) 什麼時候 -t (--until) 查看特定時間段內登錄的用戶。這個 -s 顯示登錄狀態的選項和 -t 在指定時間之前顯示登錄狀態的選項。

例如, 2021-01-07 到達 2021-01-11,命令是:

$ last -s 2021-01-07 -t 2021-01-11

示例輸出:

ostechni pts/0        192.168.225.37   Thu Jan  7 08:30 - 13:16  (04:46)
ostechni tty1                          Thu Jan  7 08:29 - down   (04:47)
reboot   system boot  5.4.0-53-generic Thu Jan  7 08:20 - 13:16  (04:56)

wtmp begins Sun May 24 13:16:52 2020

查看最近登錄 昨天 到達 今天, 跑:

$ last -s yesterday -t today

如果只想列出從 2021 年 1 月 7 日到現在的登錄,請運行:

$ last -s 2021-01-07
ostechni pts/0        192.168.225.37   Mon Jan 11 06:39   still logged in
reboot   system boot  5.4.0-59-generic Mon Jan 11 06:37   still running
ostechni pts/0        192.168.225.37   Thu Jan  7 08:30 - 13:16  (04:46)
ostechni tty1                          Thu Jan  7 08:29 - down   (04:47)
reboot   system boot  5.4.0-53-generic Thu Jan  7 08:20 - 13:16  (04:56)

wtmp begins Sun May 24 13:16:52 2020

1.8. 顯示上次登錄用戶的完整日期和時間

這個 -F (--fulltimes) 顯示完整登錄和註銷日期和時間的選項 last 命令的輸出。

$ last -5 -F

示例輸出:

ostechni pts/0        192.168.225.37   Mon Jan 11 06:39:29 2021   still logged in
[...]

1.9. 在最後一列顯示主機名

這個 -a (--hostlast) 選項以最後顯示主機名列以防止截斷。

$ last -d -a
ostechni pts/0        Mon Jan 11 06:39   still logged in    ostechnix
[...]

1.10. 顯示偽用戶’reboot’的上次登錄記錄

正如我之前所說,最後一條命令記錄了名為“restart”和“shutdown”的特殊偽用戶。

要查看“rebo​​ot”和“shutdown”用戶的最後登錄詳細信息,請使用以下命令:

$ last reboot
$ last shutdown

2. 在 Linux 上使用 lastb 查看失敗的登錄嘗試。

這個 lastb 什麼時候 last 命令,但它只列出所有錯誤的登錄嘗試。從失敗的登錄詳細信息中檢索 /var/log/btmp 文檔。

請注意系統只記錄信息 btmp 文件(如果存在)。如果由於某種原因該文件不可用,只需使用以下命令創建它: touch 命令是:

$ sudo touch /var/log/btmp

您現在可以使用 lastb 命令查看失敗的登錄嘗試,如下所示。

$ sudo lastb

示例輸出:

UNKNOWN  tty1                          Mon Jan 11 07:51 - 07:51  (00:00)
sk       tty1                          Mon Jan 11 07:51 - 07:51  (00:00)
UNKNOWN  tty1                          Mon Jan 11 07:51 - 07:51  (00:00)
sk       tty1                          Mon Jan 11 07:51 - 07:51  (00:00)
ostechni ssh:notty    192.168.225.37   Mon Jan 11 07:49 - 07:49  (00:00)
ostechni ssh:notty    192.168.225.37   Mon Jan 11 07:49 - 07:49  (00:00)
ostechni ssh:notty    192.168.225.37   Mon Jan 11 07:49 - 07:49  (00:00)
UNKNOWN  tty1                          Wed Jan  6 10:59 - 10:59  (00:00)

btmp begins Wed Jan  6 10:59:57 2021
在 Linux 中使用 lastb 命令查看失敗的登錄嘗試在 Linux 中使用 lastb 命令查看失敗的登錄嘗試

上面的命令將列出 Linux 系統中所有用戶的所有失敗登錄嘗試。它還顯示通過 SSH 的失敗登錄嘗試。

3. 在Linux 上使用lastlog 命令查找最後登錄的用戶。

這個 最後記錄 使用該命令查看所有用戶或 Linux 和類 Unix 操作系統上特定用戶的最近登錄。獲取最後登錄的用戶列表 /var/log/lastlog 保存到文件並將結果打印到標準輸出。

要查看所有用戶的最近登錄,請運行:

$ lastlog

示例輸出:

Username         Port     From             Latest
root                                       **Never logged in**
daemon                                     **Never logged in**
bin                                        **Never logged in**
[...]
systemd-coredump                           **Never logged in**
ostechnix        tty1                      Mon Jan 11 07:51:46 +0000 2021
lxd                                        **Never logged in**
dnsmasq                                    **Never logged in**
libvirt-qemu                               **Never logged in**
libvirt-dnsmasq                            **Never logged in**
cockpit-ws                                 **Never logged in**
cockpit-wsinstance                           **Never logged in**
libvirtdbus                                **Never logged in**
_flatpak                                   **Never logged in**
sk               pts/0    192.168.225.37   Wed Jan  6 11:02:17 +0000 2021
root                                       **Never logged in**
nobody                                     **Never logged in**
使用 lastlog 命令查找 Linux 上最後登錄的用戶使用 lastlog 命令查找 Linux 上最後登錄的用戶

正如您在上面的輸出中看到的, lastlog 使用該命令查看系統用戶賬號和其他服務賬號的上次登錄記錄。 bin, daemon, sys, mail, nobody 等等

這個 lastlog 此命令將打印登錄名、端口、用戶登錄的 IP 地址以及上次登錄的日期和時間。如果用戶從未登錄過,則打印一條消息 ** Never logged in** 而不是輸出端口和時間。

您可能想知道為什麼有那麼多服務帳戶從未登錄過。這意味著這些帳戶的登錄 shell 是 /sbin/nologin這是限制直接訪問 shell 的常見安全做法。

3.1. 查看特定用戶的上次登錄詳細信息

例如,要顯示指定用戶的最後一條日誌記錄,使用 骨科,命令將是:

$ lastlog -u ostechnix

示例輸出:

Username         Port     From             Latest
ostechnix        tty1                      Mon Jan 11 07:51:46 +0000 2021

3.2. 查看X天前或最近的上次登錄記錄

這個 lastlog 此命令可以顯示大約 X 天前的最近登錄記錄。

例如,您可以使用: -b 標誌是:

$ lastlog -b 5

同樣,要顯示過去 5 天的登錄,請使用: -t 橫幅:

$ lastlog -t 5

3.3. 在 Linux 上使用 lastlog 刪除或清除上次登錄信息

如果您不想要用戶的 lastlog 記錄,請使用 -C (--clear) 旗幟:

$ sudo lastlog -u ostechnix -C

要確認日誌已被清除,請運行:

$ lastlog -u ostechnix
Username         Port     From             Latest
ostechnix                                         **Never logged in**

得到幫助

有關詳細信息,請參閱每個命令的幫助部分。

$ last --help
$ lastb --help
$ lastlog --help

或者,查看每個命令的手冊頁。

$ man last
$ man lastb
$ man lastlog

這個 last, lastb 什麼時候 lastlog Rescue 命令用於檢測 Linux 系統上的可疑用戶活動。找出最近登錄(或註銷)Linux 服務器的人員、登錄時間以及登錄時間是幫助故障排除的重要細節。

相關文件:

  • 如何在 Linux 中查找當前登錄的用戶
  • 如何在 Linux 中列出所有用戶
  • 如何監控 Linux 上的用戶活動
  • 如何限制用戶訪問 Linux 系統

查找上次登錄的用戶lastlastblastlogLinux AdministrationLinuxLinux Basic CommandsLinux PromptLinux User Management