如何使用不同于 EUID 的 RUID 启动(或查找)进程?

dzi*_*990 3 process setuid ps

受到先前回答的问题之一的启发,我尝试由不是其所有者的用户执行程序 - 并且该进程的 RUID 和 EUID 保持不变。(除非我读错了答案并且这不是您可以实现差异的方式。)

然后我尝试通过sudo--以另一个用户的身份打开一个程序,但仍然没有。

我已经通过 扫描了所有已经存在的进程(我认为)ps axo euid,ruid,comm -e g,并且它们都没有不同的 RUID 和 EUID。

我如何才能实现(或找到具有)差异的过程?一些特定的命令会有所帮助,因为我可能在某些步骤中犯了一些错误。

Gil*_*il' 8

调用一个你不拥有的可执行文件没什么了不起的。系统上的大多数可执行文件都属于 root,运行它们不会给用户任何额外的权限。

只有setuid可执行文件以设置为可执行文件所有者的有效 UID开头,而真实 UID仍然是调用进程的真实 UID。

sudo是 setuid root,因此它使用有效的 UID 0 和您的真实 UID 运行。但是当它调用另一个命令时,它会为目标用户设置有效的 UID 和真实的 UID。您必须捕获sudo自身才能观察到不同于 RUID 的 EUID。除非sudo提示您输入密码,否则这将太快而无法看到。

通过passwd以非 root 用户身份运行命令,您可以轻松观察不同的 UID 。在显示提示时,ps在另一个终端中运行:

ps -o user,ruser -C passwd
Run Code Online (Sandbox Code Playgroud)

要查找具有不同 EUID 和 RUID 的所有正在运行的进程,您可以使用

ps -e -o user= -o ruser= | awk '$1 != $2'
Run Code Online (Sandbox Code Playgroud)

找不到任何是正常的,大多数 setuid 进程都是短暂的。