讓我們想像這麼一幕。你有一台伺服器經常被網路中各系統的許多使用者存取。有可能出現某些使用者忘記登出會話讓會話保持會話處於連線狀態。我們都知道留下一個處於連線狀態的使用者會話是一件多麼危險的事情。有些用戶可能會藉此故意做一些損壞系統的事情。而你,身為系統管理員,會去每個系統上都檢查一遍使用者是否有登出嗎?其實這完全沒必要的。而且若網路中有數百上千台機器,這也太耗時了。不過,你可以讓使用者在本機或 SSH 會話上超過一定時間不活躍的情況下自動登出。本教學就將教你如何在類 Unix 系統上實現這一點。一點都不難。跟我做。
在 Linux 上實現一段時間後自動登出非活動用戶
有三種實作方法。讓我們先來看第一種方法。
方法 1:
編輯 ~/.bashrc 或 ~/.bash_profile 檔案:
$ vi ~/.bashrc
或,
$ vi ~/.bash_profile
將下面行加入其中:
TMOUT=100
這會讓使用者在停止動作 100 秒後自動登出。你可以根據需要定義這個值。儲存並關閉文件。
執行下方指令讓變更生效:
$ source ~/.bashrc
或,
$ source ~/.bash_profile
現在讓會話閒置 100 秒。 100 秒不活動後,你會看到下面這段訊息,並且使用者會自動退出會話。
timed out waiting for input: auto-logout Connection to 192.168.43.2 closed.
該設定可以輕易地被使用者所修改。因為,~/.bashrc 檔案被使用者自己所擁有。
要修改或刪除逾時設置,只需要刪除上面新增的行然後執行 source ~/.bashrc 命令讓修改生效。
此外,使用者也可以執行下面命令來禁止逾時:
$ export TMOUT=0
或,
$ unset TMOUT
若你想阻止使用者修改該設置,使用下面方法代替。
方法 2:
以 root 使用者登入。
建立一個名為 autologout.sh 的新檔案。
# vi /etc/profile.d/autologout.sh
加入下面內容:
TMOUT=100 readonly TMOUT export TMOUT
儲存並退出該檔案。
為它新增可執行權限:
# chmod +x /etc/profile.d/autologout.sh
現在,登出或重新啟動系統。非活動用戶就會在 100 秒後自動登出了。普通用戶即使想保留會話連線但也無法修改該配置了。他們會在 100 秒後強制退出。
這兩種方法對本機會話和遠端會話都適用(即本機登入的使用者和遠端系統上透過 SSH 登入的使用者)。以下讓我們來看看如何實作只自動登出非活動的 SSH 會話,而不自動登出本機會話。
方法 3:
這種方法,我們只會讓 SSH 會話使用者在一段時間不活動後自動登出。
編輯 /etc/ssh/sshd_config 檔案:
$ sudo vi /etc/ssh/sshd_config
新增/修改下面行:
ClientAliveInterval 100 ClientAliveCountMax 0
儲存並退出該檔案。重啟 sshd 服務讓改動生效。
$ sudo systemctl restart sshd
現在,在遠端系統透過 ssh 登入該系統。 100 秒後,ssh 會話就會自動關閉了,你也會看到下面訊息:
$ Connection to 192.168.43.2 closed by remote host. Connection to 192.168.43.2 closed.
現在,任何人從遠端系統透過 SSH 登入本系統,都會在 100 秒不活動後自動登出了。
以上是介紹 Linux 上的自動登出方法,以防止使用者長時間不活動的詳細內容。更多資訊請關注PHP中文網其他相關文章!