关于多个su的说明

时间:2014-06-09 02:54:22

标签: linux unix pid su

当多重su发生时,我有点困惑。让我们说这种情况发生了:

Fikrie su to root :

ps -ef | grep su:

root       15524  15388  0  10:15  pts/0  00:00:00 su root

我知道su的pid是15524而父pid是15388.但是当多个su发生时。例如:这种情况。

Fikrie su root:
root su fikrie2:
fikrie 2 su root:

ps -ef | grep su:

root       15450  15388  0  10:15  pts/0  00:00:00 su root
fikrie2    15468  15458  0  10:15  pts/0  00:00:00 su fikrie2
root       15478  15476  0  10:15  pts/0  00:00:00 su root

我认为当root su进入fikrie2时,第一个pid将是第二个su的ppid。不知何故,当我试图改变这个过程时,这让我很困惑。 ppid变为15458而不是1545015388。没有ppid与之前的ppid或pid相关联/相关。我尝试谷歌并阅读process relationship书中的Advanced Programming in the UNIX Environment。有人可以给我一个很好的解释,或者可能是一个链接,以帮助我更多地了解过程关系。

我正在尝试编写代码来查找su到该用户的用户。从我所看到的所有答案中,他们只能帮助找到原始用户,例如。 fikrie。如果第二种情况发生,当我从fikrie2 su起来时,我无法得到fikrie2。相反,我得到fikrie,这是原始用户。我最初的想法是使用父ID来获取用户,但是从命令行执行此操作时。这真让我迷惑。

PS *我在Unix平台上尝试这个。我对Windows一无所知,但如果Windows和Unix之间的ppid和pid不同,请指出我对Unix的指导。

1 个答案:

答案 0 :(得分:0)

我不确定,但我怀疑你看到的父进程是被调用的shell。当你su,你将运行.profile,它将调用多个其他进程,并以一个正在启动的shell结束。所以父进程不会是之前的su调用,因为这不是产生这个进程的过程。外壳做到了。