Linux桌面如何执行系统操作?


8

从桌面登录后,Linux桌面可执行一些操作,否则用户将无法使用这些操作。输入密码后,只有sudo用户才能使用诸如系统关闭和更改系统时间之类的操作。这是如何运作的。是否有运行的root守护程序接收登录用户的命令。请引导我找到正确的答案。

我正在运行Ubuntu 13.10。


1
没有“ Linux桌面”之类的东西。您正在使用什么桌面环境?
马太福音

我正在使用Ubuntu 13.10 Unity(ubuntu-desktop)。我猜想发行版中的想法是相同的,因此在这里问而不是askubuntu。
cnvzmxcvmcx

这不是发行问题,而是您使用哪种桌面环境的问题-KDE可能不像Gnome那样做,也不像Unity那样做。(尽管他们可能都使用相同的技术。)
Mat

此处-> unix.stackexchange.com/questions/101074/…上有关“ 事物如何在后台运行(又名GUI)” 的答案/评论,mount可能对(ing)的示例有所帮助。此刻,我个人还是在对它们进行大量的咀嚼
erch 2013年

@Mat AFAIK,他们现在都已经在D-Bus上标准化了。
吉尔(Gilles)'所以

Answers:


6

当前在Ubuntu上,实际的关闭是由Consoleroot守护程序执行的console-kit-daemon,该守护程序以root特权运行。ConsoleKit守护程序通过D-Bus从桌面面板应用程序接收关闭请求。polkit(以前称为PolicyKit)处理允许非特权进程与特权进程对话的策略。您可以根据需要模拟ConsoleKit调用。特别是,要告诉ConsoleKit执行关机,您可以执行以下操作:dbus-send

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

在Ubuntu上,ConsoleKit取代了硬件抽象层(HAL),该子系统旨在允许桌面应用程序通过可移植的抽象API发现和使用主机系统的硬件,而与底层硬件的类型无关。今天,大多数Linux发行版均不推荐使用HAL。dbus-send使用HAL 的等效调用是:

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

当前,ConsoleKit未被积极维护。freedesktop.org项目的重点已经转向systemd-initindsystemd init系统的内置座位/用户/会话管理。这将如何影响采用自己的init系统的发行版,如Ubuntu中的新贵,尚待观察。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.