¿Cómo realiza el escritorio de Linux las acciones del sistema?

8

El escritorio de Linux puede realizar varias acciones que de otro modo no estaría disponible para el usuario cuando inicie sesión desde un terminal. Las acciones como el apagado del sistema y el cambio de la hora del sistema solo son accesibles para un usuario de sudo después de ingresar la contraseña. Como funciona esto. ¿Hay un demonio root en ejecución que toma el comando del usuario de inicio de sesión? Por favor guíame a la respuesta correcta.

Estoy ejecutando Ubuntu 13.10.

cnvzmxcvmcx
fuente
1
No existe tal cosa como "el escritorio de Linux". ¿Qué entorno de escritorio estás usando?
Mat
Estoy usando Ubuntu 13.10 Unity (ubuntu-desktop). Supuse que la idea es la misma en todas las distribuciones, por lo tanto, pregunté aquí en lugar de askubuntu.
cnvzmxcvmcx
No es una cuestión de distribución, es una cuestión de qué entorno de escritorio utilizas; KDE podría no hacerlo de la misma manera que lo hace Gnome, ni como lo hace Unity. (Sin embargo, todos podrían usar la misma técnica)
Mat
Probablemente las respuestas / comentarios sobre " cómo funcionan las cosas bajo el capó (también conocido como GUI)" aquí -> unix.stackexchange.com/questions/101074/… , explicadas en el ejemplo de mount(ing) pueden ayudar un poco en la comprensión. Yo, personalmente, los muerdo mucho en este momento
erch el
@Mat AFAIK ahora todos se han estandarizado en D-Bus.
Gilles 'SO- deja de ser malvado'

Respuestas:

6

Actualmente en Ubuntu, el apagado real lo realiza console-kit-daemonel demonio ConsoleKit , que se ejecuta con privilegios de root. El demonio ConsoleKit recibe la solicitud de apagado de la aplicación del panel de escritorio a través de D-Bus . Polkit (anteriormente PolicyKit) maneja la política que permite que los procesos no privilegiados hablen a procesos privilegiados . Puede emular la invocación de ConsoleKit dbus-sendsi lo desea. En particular, para indicarle a ConsoleKit que realice un apagado, puede hacer lo siguiente:

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

En Ubuntu, ConsoleKit reemplazó la Capa de abstracción de hardware (HAL), un subsistema destinado a permitir que las aplicaciones de escritorio descubran y usen el hardware del sistema host a través de una API portátil y abstracta, independientemente del tipo de hardware subyacente. HAL está actualmente en desuso en la mayoría de las distribuciones de Linux. La dbus-sendinvocación equivalente usando HAL es:

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

Actualmente, ConsoleKit no se mantiene activamente. El enfoque del proyecto freedesktop.org se ha desplazado hacia la gestión integrada de asiento / usuario / sesión del sistema systemd init llamado systemd-logind . Queda por ver cómo afectará esto a las distribuciones que adoptaron sus propios sistemas de inicio, como el advenedizo en Ubuntu.

Thomas Nyman
fuente