登出時殺死用戶進程

登出時殺死用戶進程

我有一個 Ubuntu 伺服器來處理來自使用者的遠端 X 會話。但是,我不想允許用戶運行任何類型的後台進程 - 所以這是我的問題:

如何防止用戶擁有任何後台進程,或者是否有任何簡單的方法來終止未登入用戶的進程?

答案1

我在我的伺服器上做了類似的事情。它的整體要點是這樣的

/etc/pam.d/login1)在項目底部添加session

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

2)然後創建/etc/pam_session.sh為(和chmod +x):

#!/bin/bash
[[ "$PAM_USER" == "root" ]] && exit 0

SESSION_COUNT="$(w -h "$PAM_USER" | wc -l)"

if (( SESSION_COUNT == 0 )) && [[ "$PAM_TYPE" == "close_session" ]]; then
  pkill -u "$PAM_USER"
fi

如果你願意,你可以sleep 5; pkill -9 -u "$PAM_USER"在 之後添加類似的內容pkill以確保它確實已經死了。

這只會在登入 shell 退出時被調用,因此它不會影響自動化系統活動。但是,如果您想要更安全,您可以新增檢查,例如 UID 是否大於 1000。

答案2

您可以使用此命令來找出哪些使用者登入系統並殺死他們:

$ who | awk '{ printf ("%s",$1 "\n"); }' | \
        grep -v root | xargs -I {} -t pkill -u $1{}

不過,它需要確定何時運行,也許:

$ ps -eaf | egrep -q [g]nome-session || who | \
            awk '{ printf ("%s",$1 "\n"); }' | \
            grep -v root | xargs -I {} -t pkill -u $1{}

這是一個想法,但我認為還需要進一步完善。

相關內容