Wie führt der Linux-Desktop Systemaktionen aus?

8

Der Linux-Desktop kann mehrere Aktionen ausführen, die dem Benutzer sonst nicht zur Verfügung stehen, wenn er von einem Terminal aus angemeldet ist. Aktionen wie das Herunterfahren des Systems und das Ändern der Systemzeit sind nur für einen Sudo-Benutzer nach Eingabe des Kennworts zugänglich. Wie funktioniert das. Wird ein Root-Daemon ausgeführt, der den Befehl des angemeldeten Benutzers entgegennimmt? Bitte führen Sie mich zur richtigen Antwort.

Ich verwende Ubuntu 13.10.

cnvzmxcvmcx
quelle
1
Es gibt keinen "Linux-Desktop". Welche Desktop-Umgebung verwenden Sie?
Mat
Ich verwende Ubuntu 13.10 Unity (Ubuntu-Desktop). Ich nahm an, dass die Idee in allen Distributionen gleich ist, daher wurde hier anstelle von askubuntu gefragt.
cnvzmxcvmcx
Es ist keine Frage der Distribution, es ist eine Frage der Desktop-Umgebung, die Sie verwenden - KDE macht es möglicherweise nicht so wie Gnome oder Unity. (Sie könnten jedoch alle die gleiche Technik verwenden.)
Mat
Wahrscheinlich könnten die Antworten / Kommentare zu " Wie die Dinge unter der Haube funktionieren (auch bekannt als GUI)" hier -> unix.stackexchange.com/questions/101074/… , die am Beispiel von mount(ing) erläutert wurden , ein wenig zum Verständnis beitragen. Ich persönlich kaue im Moment heftig an ihnen
erch
@Mat AFAIK sie haben jetzt alle auf D-Bus standardisiert.
Gilles 'SO - hör auf böse zu sein'

Antworten:

6

Derzeit auf Ubuntu, die tatsächliche Abschaltung wird durch ausgeführt console-kit-daemon, den ConsoleKit - Daemon, der mit Root - Rechten ausgeführt wird . Der ConsoleKit-Dämon empfängt die Anforderung zum Herunterfahren von der Desktop-Panel-Anwendung über D-Bus . Die Richtlinie, mit der nicht privilegierte Prozesse mit privilegierten Prozessen sprechen können, wird von polkit (ehemals PolicyKit) verwaltet. Sie können den ConsoleKit-Aufruf über emulieren, dbus-sendwenn Sie dies wünschen. Um ConsoleKit anzuweisen, ein Herunterfahren durchzuführen, können Sie Folgendes tun:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

Unter Ubuntu ersetzte ConsoleKit die Hardware Abstraction Layer (HAL), ein Subsystem, mit dem Desktopanwendungen die Hardware des Hostsystems unabhängig vom Typ der zugrunde liegenden Hardware über eine tragbare und abstrakte API erkennen und verwenden können. HAL ist heute in den meisten Linux-Distributionen veraltet. Der äquivalente dbus-sendAufruf mit HAL lautet:

dbus-send --print-reply --system --dest=org.freedesktop.Hal \ 
/org/freedesktop/Hal/devices/computer/org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

Derzeit wird ConsoleKit nicht aktiv gewartet. Der Schwerpunkt des freedesktop.org- Projekts hat sich auf das integrierte Sitz- / Benutzer- / Sitzungsmanagement des systemd- init-Systems mit dem Namen systemd-logind verlagert . Wie sich dies auf Distributionen auswirkt, die ihre eigenen Init-Systeme wie Upstart in Ubuntu übernommen haben, bleibt abzuwarten.

Thomas Nyman
quelle