Shell

讓一個未提升的使用者成功殺死他的所有程序

  • July 27, 2020

情況

我已經建立了一個環境,​​使用者可以從多個端點登錄並使用tmux, screen… 所以當他們結束工作時,他們可以註銷他們的 ssh 會話,這不會殺死任何終端多路復用器中保存的任何程序,他們可以做apkill -u ${USER}killall -u ${USER}殺死他們的所有程序,因為我將函式包裝在一個名為fulllogout.

問題

執行pkill -u ${USER}orkillall -u ${USER}時,殺死程序可以在殺死所有其他程序之前殺死自己或它的外殼,從而導致某些程序保持活動狀態。

在不提高權限的情況下如何成功地做到這一點?

kill -TERM -1會將 SIGTERM 發送到它有權這樣做的每個程序(pid 1 除外),同樣kill -KILL -1 會殺死所有可能的程序。這是在單個系統呼叫中完成的,因此不能在中途殺死自己。

引用自:https://unix.stackexchange.com/questions/580137