Linuxデスクトップはどのようにシステムアクションを実行しますか?


8

Linuxデスクトップはいくつかのアクションを実行できますが、それ以外の場合は、ターミナルからログインしたときにユーザーは使用できません。システムのシャットダウンやシステム時刻の変更などのアクションには、パスワードを入力した後、sudoユーザーのみがアクセスできます。これはどのように作動しますか。ログインユーザーからコマンドを受け取るrootデーモンが実行されていますか?正しい答えを教えてください。

Ubuntu 13.10を実行しています。


1
「Linuxデスクトップ」のようなものはありません。どのデスクトップ環境を使用していますか?
マット

Ubuntu 13.10 Unity(ubuntu-desktop)を使用しています。考えはディストリビューション全体で同じであると思いました、それでaskubuntuの代わりにここで尋ねました。
cnvzmxcvmcx 2013年

これはディストリビューションの問題ではなく、使用するデスクトップ環境の問題です。KDEはGnomeやUnityと同じように動作しない場合があります。(ただし、すべて同じテクニックを使用する場合があります。)
Mat

おそらく、ここでの「フードの下での動作(別名GUI)」に関する回答/コメント-> unix.stackexchange.com/questions/101074/…mount(ing)の例で説明したものは、理解に少し役立つかもしれません。私は個人的に、現時点でそれらを強く噛んでいます
2013年

@Mat AFAIK彼らは現在すべてD-Busで標準化しています。
Gilles「SO-邪悪なことをやめなさい」

回答:


6

現在のUbuntu上で、実際のシャットダウンをすることによって行われconsole-kit-daemonConsoleKitの root権限で動作するデーモン、。ConsoleKitデーモンは、D-Busを介してデスクトップパネルアプリケーションからシャットダウン要求を受け取ります。非特権プロセスが特権プロセスと通信できるようにするポリシーは、polkit(以前のPolicyKit)によって処理されます。dbus-send必要に応じて、ConsoleKit呼び出しをエミュレートできます。特に、ConsoleKitにシャットダウンを実行するように指示するには、次のようにします。

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

Ubuntuでは、ConsoleKitが、ハードウェアアブストラクションレイヤー(HAL)に置き換わりました。これは、基盤となるハードウェアの種類に関係なく、デスクトップアプリケーションがポータブルで抽象的なAPIを介してホストシステムのハードウェアを検出して使用できるようにするサブシステムです。HALは現在、ほとんどのLinuxディストリビューションで非推奨になっています。dbus-sendHALを使用した同等の呼び出しは次のとおりです。

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

現在、ConsoleKitは積極的にメンテナンスされていません。焦点freedesktop.orgプロジェクトが向かってシフトしているビルトインの座席/ユーザー/セッション管理にsystemdと呼ばれるinitシステムにsystemd-logind。これが、Ubuntuのupstartのように、独自のinitシステムを採用したディストリビューションにどのように影響するかは、まだ不明です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.