2014-06-09 6 views
0

다중 su가 발생하면 약간 혼란 스럽습니다. 내가 그 스와의 PID는 15524이며, 부모 pid는 15388.입니다 그러나 여러 스와 일어날 때 알고다중 su에 대한 설명

Fikrie su to root : 

ps -ef | grep su: 

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

이 같은 상황이 일어날 말할 수 있습니다. 예 :이 상황.

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가 될 것이라고 생각했다. 어떻게 든 grep 프로세스를 시도 할 때, 이것은 혼란 스럽습니다. ppid가 15450 또는 15388 대신 15458이되었습니다. ppid는 그 전에는 ppid 또는 pid와 연결되어 있지 않습니다. 나는 Google에 process relationship에 관해서 Advanced Programming in the UNIX Environment 책을 읽으려고 노력했다. 누군가가 나에게 이것에 대한 좋은 설명을 주거나 프로세스 관계에 대해 더 많이 이해할 수있는 링크를 줄 수 있습니까?

해당 사용자로 su를 사용하는 사용자를 찾기 위해 코드를 작성하려고합니다. 내가보기에 모든 대답에서, 그들은 오직 예를 들어, 원래의 사용자를 찾는 데 도움이됩니다. fikrie. 두 번째 상황이 발생하면 fikrie2에서 루트로 su를 할 때 나는 fikrie2를 얻을 수 없습니다. 대신 원래 사용자 인 fikrie를 얻습니다. 내 원래 생각은 부모 ID를 사용하여 사용자를 얻는 것이지만 명령 행에서 수행하는 것이 었습니다. 이것은 정말로 나를 혼란스럽게합니다.

추신 : 나는 유닉스 플랫폼에서 이것을 시도하고있다. 나는 윈도우에 관해서는 아무 것도 모르지만, ppid와 pid가 윈도우와 유닉스간에 다르다면, 유닉스로의 방향을 가르쳐주세요.

답변

0

잘 모르겠지만, 부모 프로세스가 호출되는 쉘이 의심 스럽습니다. su를 사용하면 여러 개의 다른 프로세스를 호출하는 .profile을 실행하고 쉘이 시작될 때 종료됩니다. 따라서 상위 프로세스는 이전에 su를 호출하지 않을 것입니다. 왜냐하면 이것이 상위 프로세스를 생성 한 프로세스가 아니기 때문입니다. 쉘이 그랬다.