Wenn ich versuche, den Computer über eine Befehlszeile oder ein Terminal herunterzufahren, muss ich über Root-Berechtigungen verfügen:
amy@amy:~$ shutdown now
shutdown: Need to be root
und
amy@amy:~$ halt
halt: Need to be root
Beim Herunterfahren über die grafische Benutzeroberfläche, dh über die Schaltfläche zum Herunterfahren oder die Schaltfläche zum Herunterfahren der Hardware, werden Sie jedoch nicht aufgefordert, das Kennwort einzugeben. Was bedeutet das für ein Herunterfahren der grafischen Oberfläche und warum werden weder das Kennwort noch die Root-Berechtigungen benötigt?
Ich benutze Ubuntu 11.04 Natty.
Antworten:
Der Hardware-Netzschalter löst ein ACPI-Ereignis aus, das
acpid
(der ACPI-Dämon) bemerkt und auf das reagiert. Fahren Sie in diesem Fall das System herunter, obwohl Sie es tun lassen könnten, was Sie wollen. Der ACPI-Dämon wird als Root ausgeführt und hat daher die Berechtigung, das System herunterzufahren. Desktop-Umgebungen (z. B.gdm
für Gnome) werden in der Regel auch als Root ausgeführt. Ich vermute, dass sie auf die gleiche Weise funktionieren - Sie haben keine Berechtigung zum Herunterfahren des Systems, können jedoch angeben, dassgdm
Sie möchten, dass es heruntergefahren wird, und dass es ausgeführt werden kann in deinem Namenquelle
acpid
etwas anderes als das zu tun, müssten Sie root sein, damit Sie bereits die Erlaubnis haben, unsichere Dinge zu tun. Es ist auch möglich, MAC-Systeme wie SELinux zum Schutz zu verwendenacpid
, um die Funktionen einzuschränken, die sie ausführen dürfen, auch wenn sie als Root ausgeführt werden.acpid
aber konfigurierbar, kann es abhängig von den Hardware-Ereignissen, die es sieht, verschiedene Skripte ausführen (z. B. habe ichacpid
meinen Computer gesperrt, wenn ich denIn Michaels Antwort wird die Systemfunktion bei Verwendung des Hardware-Netzschalters korrekt erläutert. Die meisten Desktop-Umgebungen verwenden sie jedoch
dbus
für diesen Zweck, anstatt sie selbst auszuführen . GNOME verwendet beispielsweisedbus
's,org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
wenn auf die Schaltfläche zum Herunterfahren geklickt wird. Wenn dies gesendet wird, werdendbus
einige Überprüfungen durchgeführt, um festzustellen, ob der Benutzer, der die Nachricht sendet, berechtigt ist, ein Herunterfahren durchzuführen, und wenn dies der Fall ist, wird das System heruntergefahren.Sie können dies mit emulieren
dbus-send
. Verwenden Sie zum Herunterfahren Ihres Systems beispielsweise Folgendesdbus
:quelle