強制命令在註銷或斷開連接時運行?

強制命令在註銷或斷開連接時運行?

我正在透過 SSH 登入系統,並且希望能夠強制在登出時執行命令,無論是有意登出(退出 shell)還是因為我的 SSH 連線已中斷/已終止。有什麼辦法可以設定這個嗎?我現在最好的猜測是將登入 shell 更改為程序,該程序攔截 SSH 關閉時發送的信號(SIGHUP?)並執行命令,但我想知道是否有更乾淨的解決方案。

答案1

最好的方法是使用帕姆

/etc/pam.d將有多個文件,其中之一將被稱為sshd.如果您只想影響 ssh,而不影響其他登入(例如 GUI 或真正的 TTY),則需要此檔案。
如果您想影響所有登錄,則需要一個「通用」檔案。這個其他「通用」檔案的名稱因發行版而異,但您可以透過遵循檔案中的include和語句來追蹤它,直到找到基本檔案。substacksshd

確定要使用的文件後/etc/pam.d,將如下行新增至該session部分:

session     optional    pam_exec.so quiet /etc/pam_session.sh

這將導致/etc/pam_session.sh每次有人登入和登出時都會調用(無論是優雅還是不優雅)。

現在您只需要建立/etc/pam_session.sh.以下是一個範例,您可以用來在每次有人登出時運行某些內容:

#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
  something
fi

(別忘了chmod a+x腳本)

相關內容