溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux下如何讓長時間不活動的用戶自動登出

發布時間:2022-02-19 14:03:30 來源:億速云 閱讀:259 作者:iii 欄目:開發技術
# Linux下如何讓長時間不活動的用戶自動登出

## 引言

在Linux服務器管理或共享計算機環境中,用戶登錄后長時間不操作可能導致安全隱患和資源浪費。本文將詳細介紹如何通過系統配置實現用戶會話超時自動注銷功能,涵蓋Bash終端、SSH會話、GUI桌面環境等多種場景的解決方案。

---

## 一、終端會話超時設置(TTY/Console)

### 1. 使用TMOUT環境變量
`TMOUT`是Bash內置的環境變量,可設置shell空閑超時時間(秒):

```bash
# 臨時生效(當前會話)
export TMOUT=300  # 5分鐘無操作后自動退出

# 永久生效(對所有用戶)
sudo tee -a /etc/profile <<<'export TMOUT=300'
sudo tee -a /etc/bashrc <<<'export TMOUT=300'

# 僅對特定用戶生效
echo 'export TMOUT=300' >> ~/.bash_profile

注意:需重新登錄或執行source /etc/profile生效。

2. 通過/etc/profile.d/配置

更規范的配置方式:

sudo tee /etc/profile.d/autologout.sh <<'EOF'
#!/bin/sh
TMOUT=900  # 15分鐘
readonly TMOUT
export TMOUT
EOF

sudo chmod +x /etc/profile.d/autologout.sh

二、SSH會話超時控制

1. 服務端全局配置(sshd_config)

編輯/etc/ssh/sshd_config

ClientAliveInterval 300     # 5分鐘檢測一次活動
ClientAliveCountMax 0      # 無響應立即斷開

重啟SSH服務:

sudo systemctl restart sshd

2. 客戶端超時設置

在客戶端~/.ssh/config中添加:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

三、桌面環境自動注銷

1. GNOME桌面配置

通過gsettings設置:

# 設置15分鐘無操作鎖定
gsettings set org.gnome.desktop.session idle-delay 900

# 鎖定后立即注銷(需安裝dconf-editor)
gsettings set org.gnome.desktop.lockdown disable-lock-screen 'true'

2. KDE Plasma配置

修改~/.config/kscreenlockerrc

[Daemon]
Autolock=false
LockOnResume=false

[Greeter]
Timeout=10

四、PAM模塊實現系統級控制

通過pam_execpam_time模塊實現:

  1. 編輯/etc/pam.d/sshd/etc/pam.d/login
session    required     pam_exec.so /usr/local/bin/check_inactivity.sh
  1. 創建檢測腳本:
#!/bin/bash
# /usr/local/bin/check_inactivity.sh
IDLE_TIME=$(w -hs | awk '{print $5}' | grep -o '[0-9]*')
MAX_IDLE=1800  # 30分鐘

if [ "$IDLE_TIME" -gt "$MAX_IDLE" ]; then
    pkill -KILL -u $PAM_USER
fi

五、systemd-logind配置

對于使用systemd的系統:

sudo tee /etc/systemd/logind.conf.d/timeout.conf <<'EOF'
[Login]
KillUserProcesses=yes
KillExcludeUsers=root
IdleAction=lock
IdleActionSec=15min
EOF

systemctl restart systemd-logind

六、注意事項與排錯

常見問題處理

  1. TMOUT不生效

    • 檢查是否被~/.bashrc覆蓋
    • 確認shell類型(zsh需配置TMOUT
  2. SSH保持連接

    # 臨時保持連接(每60秒發送心跳)
    ssh -o ServerAliveInterval=60 user@host
    
  3. 特殊用戶排除

    # 在/etc/profile.d/腳本中添加判斷
    if [ "$USER" != "keepalive" ]; then
       export TMOUT=600
    fi
    

七、安全建議

  1. 分級設置超時

    • 普通用戶:15-30分鐘
    • 管理員賬戶:5-10分鐘
    • 服務賬戶:不設置超時
  2. 日志記錄

    # 記錄注銷事件
    echo "$(date '+%Y-%m-%d %H:%M:%S') - User $USER logged out by timeout" >> /var/log/timeout.log
    
  3. 結合其他安全措施

    # 失敗登錄嘗試后縮短超時時間
    sudo tee -a /etc/pam.d/sshd <<'EOF'
    auth required pam_faildelay.so delay=3000000  # 3秒延遲
    EOF
    

結語

通過合理配置超時自動注銷機制,可顯著提升Linux系統的安全性。建議根據實際環境測試不同方案的兼容性,生產環境中應先進行灰度測試。對于關鍵服務器,建議配合監控系統實現異常登錄告警功能。

擴展閱讀
- Linux PAM官方文檔
- systemd.logind配置手冊 “`

該文檔包含代碼塊、分級標題和結構化內容,總字數約1500字,可直接保存為.md文件使用。需要調整細節時可修改超時時間值或補充特定桌面環境的配置說明。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女