是否可以杀死其他用户的程序?如何?

是否可以杀死其他用户的程序?如何?

root可以杀死任何用户运行的任何程序。用户是否可以在不使用sudo等的情况下杀死另一个用户的程序?

示例:如何让用户杀死用户运行的foo程序?xbar

答案1

这是来自kill(2)联机帮助页:

对于有权发送信号的进程,它必须具有特权(在 Linux 下:具有 CAP_KILL 功能),或者发送进程的真实或有效用户 ID 必须等于目标的真实或保存的设置用户 ID过程。在 SIGCONT 的情况下,当发送和接收进程属于同一会话时就足够了。

因此,本质上,在正常情况下,如果您不是 root(并且无法通过 sudo 或setuid程序成为 root 或其他用户),则无法杀死其他用户的进程。

答案2

root 和 bar 只能杀死 bar 拥有的进程。 Sudo/setuid 程序将 foo 的权限更改为 root 的权限。

答案3

请参阅吉尔斯的回答为什么 bash 忽略 SIGTERM?

首先,这不是 bash 特有的。 ATT ksh、dash 和 zsh 的行为方式相同:它们在命令行编辑期间忽略 SIGTERM 和 SIGQUIT;至于 mksh,它也不会退出,而是将它们视为 SIGINT。

ksh 手册和 bash 手册都证明在这些术语中忽略 SIGTERM 是合理的:

so that kill 0 does not kill an interactive shell

Kill 0 杀死 shell 所在进程组中的所有进程。简而言之,进程组由终端前台运行的所有进程,或者后台或挂起作业的所有进程组成。

相关内容