
我正在 Linux 伺服器上運行一個長時間運行的程式。許多其他用戶也在該伺服器上運行他們的程式。我們所有人都有 sudo 權限。
假設一個惡作劇的用戶殺死了我正在運行的程序,例如使用sudo kill
或sudo 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 授予一部分權限。