Comment le bureau Linux effectue-t-il les actions système?


8

Le bureau Linux peut effectuer plusieurs actions qui autrement ne sont pas disponibles pour l'utilisateur lorsqu'il est connecté à partir d'un terminal. Des actions telles que l'arrêt du système et la modification de l'heure du système ne sont accessibles qu'à un utilisateur sudo après avoir entré le mot de passe. Comment cela marche-t-il. Existe-t-il un démon racine en cours d'exécution qui prend la commande de l'utilisateur connecté. Veuillez me guider vers la bonne réponse.

J'utilise Ubuntu 13.10.


1
Il n'y a rien de tel que "le bureau Linux". Quel environnement de bureau utilisez-vous?
Mat

J'utilise Ubuntu 13.10 Unity (ubuntu-desktop). J'ai supposé que l'idée était la même dans toutes les distributions, donc posée ici au lieu de askubuntu.
cnvzmxcvmcx

Ce n'est pas une question de distribution, c'est une question de l'environnement de bureau que vous utilisez - KDE pourrait ne pas le faire de la même manière que Gnome, ni comme Unity. (Ils pourraient tous utiliser la même technique cependant.)
Mat

Probablement les réponses / commentaires sur " comment les choses fonctionnent sous le capot (aka GUI)" ici -> unix.stackexchange.com/questions/101074/… , expliqués sur l'exemple de mount(ing) pourraient aider un peu à la compréhension.
Personnellement

@Mat AFAIK, ils ont tous normalisé sur D-Bus maintenant.
Gilles 'SO- arrête d'être méchant'

Réponses:


6

Actuellement sur Ubuntu, l'arrêt réel est effectué par console-kit-daemonle démon ConsoleKit , qui s'exécute avec les privilèges root. Le démon ConsoleKit reçoit la demande d'arrêt de l'application du panneau de bureau via D-Bus . La politique qui permet aux processus non privilégiés de parler à des processus privilégiés est gérée par polkit (anciennement PolicyKit). Vous pouvez émuler l'invocation de ConsoleKit via dbus-sendsi vous le souhaitez. En particulier, pour dire à ConsoleKit d'effectuer un arrêt, vous pouvez faire:

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

Sur Ubuntu, ConsoleKit a remplacé la couche d'abstraction matérielle (HAL), un sous-système visant à permettre aux applications de bureau de découvrir et d'utiliser le matériel du système hôte via une API portable et abstraite, quel que soit le type de matériel sous-jacent. HAL est aujourd'hui déconseillé dans la plupart des distributions Linux. L' dbus-sendinvocation équivalente à l' aide de HAL est:

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

Actuellement, ConsoleKit n'est pas activement maintenu. L'objectif du projet freedesktop.org s'est déplacé vers la gestion intégrée des sièges / utilisateurs / sessions du système systemd init appelé systemd-logind . Comment cela affectera les distributions qui ont adopté leurs propres systèmes d'initialisation, comme arriviste dans Ubuntu, reste à voir.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.