Warum meldet mich das Ausführen von "killall init" als Benutzer ab?

12

Auf mehreren Computern mit Ubuntu 14.XX habe ich als Benutzer den Befehl "killall init" ausgeführt und wurde sofort abgemeldet. Ich konnte mich problemlos wieder einloggen. Warum ist das? Was ist hinter den Kulissen los?

EMBLEM
quelle

Antworten:

21

Auf neueren Upstart-Systemen wird ein Sitzungsinitiierungsprozess gestartet, wenn Sie sich über die GUI anmelden. Da Ubuntu Upstart verwendet, gibt es einen initProzess für Ihre Sitzung. Testen Sie es mit pstree -ps $$einem Terminal:

$ pstree -ps $$
init(1)───lightdm(1741)───lightdm(9511)───init(9526)───/usr/bin/termin(9570)─┬─gnome-pty-helpe(9734)                                                                                                                                                                                  
                                                                             └──zsh(7944)

Wenn Sie also ausführen killall init, töten Sie nicht initPID 1 (weil Sie nicht über die Berechtigung verfügen), sondern Ihre Sitzung init, in diesem Beispiel PID 9526.

Da dies initder maßgebliche Prozess für Ihre GUI-Sitzung ist, wird Ihre Sitzung durch das Beenden beendet und Sie werden daher abgemeldet.

muru
quelle
Sendet killall das Signal immer an den nächsten Verwandten im Prozessbaum? Wenn ich den Befehl als root ausführen würde (zum Beispiel mit sudo), würde ich das gleiche Ergebnis oder eine Kernel-Panik bekommen?
Tim Seguine
1
@TimSeguine Wie der Name schon sagt, wird es an alle Prozesse mit diesem Namen gesendet. BTW, bevorzugen manche Menschen pkillstatt , killallweil killallWerke völlig anders auf anderen Systemen wie Solaris ...
glglgl
killalltötet alle. Daher der Name.
Orion
1
@TimSeguine Es wird an alle gesendet, aber wenn Sie ein normaler Benutzer sind, können Sie keine Signale an Prozesse anderer Benutzer senden. Es betrifft also nur den in Ihrem eigenen Prozessbaum.
Barmar
Das Ausführen von killall initas rootscheint keine gute Idee zu sein - besonders auf einem nützlichen System - ich denke, es initverursacht eine Kernel-Panik, wenn es abstirbt, weil es nicht beabsichtigt ist, jemals eine returnam Ende seiner mainCodeschleife zu erreichen.
SlySven