Categories: Linux

Linux 強制使用者登出教學與範例

介紹如何在 Linux 系統上強制指定的使用者登出系統,以及傳送訊息通知對方的方法。

查詢目前登入的使用者

若要查詢 Linux 系統上登入中的使用者,可以使用 wwhousers 等指令,詳細的說明可參考 Linux 查看目前登入系統的使用者教學與範例

若要強制使用者登出,除了使用者名稱之外,還必須知道使用者登入的行程 ID(process ID),這個資訊可以透過 who 指令搭配 -u 參數來查詢:

# 查詢使用者與登入行程 ID
who -u
ubuntu   pts/0        2021-04-17 08:34 00:01       26541 (42.74.241.196)
office   pts/1        2021-04-17 08:35   .         26829 (42.74.241.196)

ubuntu 這個使用者來說,其登入的行程 ID 就是 26541,只要終止這一個行程,該使用者就會被強制登出。

強制使用者登出

只要知道使用者登入的行程 ID,將該行程砍掉(kill)之後,就可以強制使用者登出系統:

# 終止指定行程 ID 為 26541 的行程
sudo kill -HUP 26541

終止使用者登入的行程之後,再以 who 查詢一次目前登入的使用者:

# 查詢使用者與登入行程 ID
who -u
office   pts/1        2021-04-17 08:35   .         26829 (42.74.241.196)

如果使用上面的 SIGNHUP 方式沒辦法終止使用者登入的行程,在沒辦法的狀況下,可以使用應強硬的 SIGKILL 方式:

# 終止指定行程 ID 為 26541 的行程(強硬方式)
sudo kill -KILL 26541

這種強制登出使用者的方法是針對指定使用者與對應的 session,也就是說如果一位使用者重複以 SSH 登入,建立多條連線的 session,使用 kill 強制登出使用者時,只會將對應的登入 session 砍掉,其他的 session 並不影響。

當我們建立的 SSH 連線因為網路問題斷線時,若伺服器這邊還處於連線狀態,就可以使用這樣的方式將指定的 SSH 連線 session 刪除。

傳送訊息通知使用者

如果想要在強制使用者登出之前,通知該使用者盡速結束目前的工作,可以使用 write 指令,並指定使用者名稱以及登入的終端設備:

# 傳送訊息給 office 使用者位於 pts/2 終端設備登入的 session
echo "Your session will end in 2 minutes. Save your work!" | write office pts/2

在這行指令執行之後,office 使用者就會收到類似這樣的訊息:

Message from ubuntu@yourhost on pts/0 at 10:18 ...
Your session will end in 2 minutes. Save your work!
EOF

參考資料

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