是否有一个真实的用户ID来标识创建该进程的用户?

是否有一个真实的用户ID来标识创建该进程的用户?

根据本节流程的角色glibc 手册:

A process also has a real user ID which identifies the user who created the process ...

为了验证这一点,我运行了命令:

ps -eo cmd,ruid,euid | grep 'bash\|login'

然后显示(lgd账户的uid为1000):

login --lgd              0      0
-bash                 1000   1000

bash为什么值 0的 ruid 不是0,因为它的创建者login属于 root 用户?我是否误解了它,或者是否调用了诸如更改 bash 的 ruid 之login类的函数?setuid()

答案1

login确实在运行之前更改了用户 ID bash。在影子实现中,你可以看到这个这里,之前还有很多进一步的设置外壳已启动

您引用的链接中描述的角色差异与 setuid 程序确实相关。如果您制作 的副本id,然后将其设置为 setuid,id -u并且id -ru将显示不同的值,后者是启动该进程的用户 ID。

相关内容