ルート権限なしで電源ボタンを押してコンピュータをシャットダウンするには?

ルート権限なしで電源ボタンを押してコンピュータをシャットダウンするには?

コマンドラインまたは端末でコンピュータをシャットダウンするには、root権限が必要です。

amy@amy:~$ shutdown now
shutdown: Need to be root

そして

amy@amy:~$ halt
halt: Need to be root

ただし、GUI(終了ボタンやハードウェア終了ボタンなど)を使用して終了すると、パスワードの入力を求められません。グラフィカルインターフェイスを閉じるとはどういう意味ですか?パスワードやルートアクセスが不要なのはなぜですか?

私はUbuntu 11.04 Nattyを使用しています。

答え1

ハードウェア電源ボタンはACPIイベントacpid(ACPIデーモン)をトリガーし、その場合はシステムをシャットダウンして応答します。ただし、必要な操作を実行することができます。 ACPIデーモンはrootとして実行されるため、システムをシャットダウンする権限があります。デスクトップ環境(gdmGnomeなど)も通常rootとして実行されるため、同じように動作すると考えられます。システムをシャットダウンする権限はありませんが、システムをシャットダウンしgdmたいと言えば、システムからシャットダウンできます。あなたに代わって

答え2

Michaelの回答では、ハードウェア電源スイッチを使用する際のシステム機能について正しく説明していますが、ほとんどのデスクトップ環境は実際にdbusこれを行うのではなく、この目的のために設計されています。たとえば、GNOMEは終了ボタンをクリックするときに使用します。このメッセージが送信されると、dbusメッセージを送信するユーザーにシャットダウンを実行する権限があることを確認するためにいくつかのチェックが実行され、権限がある場合はシステムがシャットダウンされます。org.freedesktop.Hal.Device.SystemPowerManagement.Shutdowndbus

を使用してこれをシミュレートできますdbus-send。たとえば、shutdown を使用するには、dbus次のように使用します。

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

関連情報