Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 关于多重su的解释_Linux_Unix_Pid_Su - Fatal编程技术网

Linux 关于多重su的解释

Linux 关于多重su的解释,linux,unix,pid,su,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

当发生多个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
我认为当将su根放到fikrie2中时,第一个pid将是第二个su的ppid。不知何故,当我试图改善这个过程时,这让我感到困惑。ppid变为
15458
而不是
15450
15388
。所有ppid均未与其之前的ppid或pid连接/关联。我试着用谷歌搜索并阅读《UNIX环境中的高级编程》一书中关于
进程关系的内容。有人能给我一个很好的解释,或者是一个链接来帮助我更好地理解流程关系吗

我正试图编写一个代码来找到那个用户,它将su转换成那个用户。从我调查的所有答案来看,它们只帮助找到原始用户,例如fikrie。如果出现第二种情况,我无法从fikrie2中获取fikrie2。取而代之的是fikrie,它是原始用户。我最初的想法是使用父id获取用户,但在从命令行执行时。这真把我弄糊涂了


PS*我正在Unix平台上尝试。我对Windows一无所知,但如果Windows和Unix的ppid和pid不同,请告诉我进入Unix的方向

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