如何找到哪個用戶殺死了我的程式?

如何找到哪個用戶殺死了我的程式?

我正在 Linux 伺服器上運行一個長時間運行的程式。許多其他用戶也在該伺服器上運行他們的程式。我們所有人都有 sudo 權限。

假設一個惡作劇的用戶殺死了我正在運行的程序,例如使用sudo killsudo pkill。我該如何找出這個用戶是誰?

答案1

雖然保羅的回答是正確的,但證據可以被消除,但這並不意味著證據被消除了。與了解要清除哪些日誌(如果他們願意的話)的人數相比,了解 sudo 的人更多。

在我的系統上,每次使用 sudo 時,整個命令列都會儲存在日誌中。我想你的系統可能也會這樣做。在 OpenBSD 上,這是 /var/log/authlog 而在 Debian 系統上,它是 /var/log/auth.log

如果您不知道哪個檔案儲存此類信息,請嘗試執行 sudo 命令。 (使用 sudo 做什麼並不重要:甚至echo就足夠了。目的是修改使用 sudo 時修改的日誌。)然後使用

ls -ltr /var/log/*auth*

或者

ls -ltr /var/log | tail

以查找最近修改的文件。

答案2

如果你們都有sudo,那麼就沒有保證的方法來保留被殺死進程的證據,因為任何證據都可以在相同級別的權限下被刪除。

您可以使用auditd 稽核守護程式追蹤特定的系統調用,例如kill。

顯然,root 使用者可以先停止審核守護進程,然後刪除日誌。所以你想將日誌匯出到外部。

更好的方法是更好地管理 sudo,只為每個使用者提供他們需要的存取權限。一般使用者幾乎從來不需要完全 root 存取權限,您可以使用 sudo 授予一部分權限。

相關內容