不允许用户使用 setuid 位终止以其他用户身份启动的程序

不允许用户使用 setuid 位终止以其他用户身份启动的程序

我有一个具有以下权限的二进制文件。 -rwsr-xr-x. 1 root root 因此,当某个用户 X 尝试执行该二进制文件时,它将以 root 身份运行。此外,用户可以使用 kill -9 任何方式从其 ID 中终止此进程(以 root 身份运行),以防止用户终止该进程。

答案1

用户能够终止该进程是因为该进程是由 启动的,Effective UIDroot本身却Real UID由 启动。其他用户将无法终止该进程。

您可以尝试为以下项设置 SETUID 和 SETGID 位id

# chmod u+s,g+s $(which id)

然后比较输出:

id

sudo id

你会看到差异。

您还可以尝试使用 来终止一个已设置 SETUID 和 SETGID 位并由当前用户启动的进程sudo -u SOMEOTHERUSER。您会发现它无法被终止。

我猜 SETUID 和 SETGID 位的目的不是让 root 拥有进程,而只是提升特权,但让进程归执行用户所有。而且我怀疑无论你是否愿意,你都无法改变它(除非破解内核之类的?)。

相关内容