Erklärung zu mehreren Su - Linux, Unix, Pid, ​​Su

Ich bin ein bisschen verwirrt, wenn eine multiple su passiert. Sagen wir, eine Situation wie diese passiert:

Fikrie su to root :

ps -ef | grep su:

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

Ich weiß, dass das Pid für das su 15524 und das Eltern-Pid 15388 ist. Aber wenn ein multiples su passiert. zB: diese Situation.

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

Ich dachte, dass, wenn root su in fikrie2, die erste pid wird die ppid für die zweite su sein. Irgendwie, wenn ich versuchte, den Prozess zu grepsen, verwirrt mich das. Das wurde pünktlich 15458 Anstatt von 15450 oder 15388. Keines der Produkte ist mit dem Produkt verbunden. Ich habe versucht zu googlen und zu lesen process relationship im Advanced Programming in the UNIX Environment Buch. Kann mir jemand eine gute Erklärung dazu geben oder vielleicht einen Link, der mir hilft, mehr über die Prozessbeziehung zu erfahren.

Ich versuche einen Code zu schreiben, um den Benutzer zu findensu in diesen Benutzer. Aus all der Antwort schaue ich in SO, sie helfen nur, den ursprünglichen Benutzer zu finden, z. Fikrie. Wenn die zweite Situation eintritt, war ich nicht in der Lage, fikrie2 zu bekommen, wenn ich su von fikrie2 root. Stattdessen bekomme ich Fikrie, die der ursprüngliche Benutzer ist. Meine ursprüngliche Idee war, die Eltern-ID zu verwenden, um den Benutzer zu bekommen, aber wenn Sie es tun von der Kommandozeile aus, das verwirrt mich wirklich.

PS * Ich versuche dies auf der Unix-Plattform. Ich weiß nichts über Windows, aber wenn die PPD und PID unterscheiden sich zwischen Windows und Unix, bitte zeigen Sie mir die Richtung in Unix.

Antworten:

0 für die Antwort № 1

Ich bin mir nicht sicher, aber ich vermute, dass die ElternProzess, den Sie sehen, ist die Shell, die aufgerufen wurde. Wenn Sie su haben, führen Sie die .profile aus, die mehrere andere Prozesse aufruft und mit dem Start einer Shell endet. Also wird der Elternprozess nicht der vorherige Aufruf von su sein, denn das ist nicht der Prozess, der diesen hervorgebracht hat. Die Shell hat das gemacht.


Am beliebtesten