如何找到哪个用户杀死了我的程序?

如何找到哪个用户杀死了我的程序?

我在 Linux 服务器上运行一个长期运行的程序。许多其他用户也在这个服务器上运行他们的程序。我们所有人都有 sudo 权限。

假设一个恶意用户使用sudo kill或终止了我正在运行的程序sudo pkill。我如何找出这个用户是谁?

答案1

尽管 Paul 的回答是正确的,因为可以消除证据,但这并不意味着证据被消除了。与知道要清除哪些日志的人相比,知道 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 提供部分权限。

相关内容