
我正在透過 SSH 登入系統,並且希望能夠強制在登出時執行命令,無論是有意登出(退出 shell)還是因為我的 SSH 連線已中斷/已終止。有什麼辦法可以設定這個嗎?我現在最好的猜測是將登入 shell 更改為程序,該程序攔截 SSH 關閉時發送的信號(SIGHUP?)並執行命令,但我想知道是否有更乾淨的解決方案。
答案1
最好的方法是使用帕姆。
您/etc/pam.d
將有多個文件,其中之一將被稱為sshd
.如果您只想影響 ssh,而不影響其他登入(例如 GUI 或真正的 TTY),則需要此檔案。
如果您想影響所有登錄,則需要一個「通用」檔案。這個其他「通用」檔案的名稱因發行版而異,但您可以透過遵循檔案中的include
和語句來追蹤它,直到找到基本檔案。substack
sshd
確定要使用的文件後/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
腳本)