コマンドラインまたはターミナルからコンピューターをシャットダウンしようとすると、root権限が必要です。
amy@amy:~$ shutdown now
shutdown: Need to be root
そして
amy@amy:~$ halt
halt: Need to be root
しかし、グラフィカルユーザーインターフェイス(シャットダウンボタン、またはハードウェアシャットダウンボタン)を使用してシャットダウンするときは、パスワードを要求されません。グラフィカルインターフェイスのシャットダウンとは何ですか?なぜパスワードやルート権限が必要ないのですか?
私はUbuntu 11.04 Nattyを使用しています。
ハードウェア電源ボタンは、acpid
(ACPIデーモン)が通知して反応するACPIイベントをトリガーします。この場合、システムをシャットダウンしますが、必要に応じてシステムをシャットダウンできます。 ACPIデーモンはrootとして実行されるため、システムをシャットダウンする権限があります。デスクトップ環境(例:Gnomeの場合はgdm
)もrootとして実行されるため、同じように動作すると思われます。システムをシャットダウンする権限はありませんが、gdm
あなたはそれをシャットダウンしたいのですが、あなたに代わってそれを行うことができます
Michaelの回答では、ハードウェア電源スイッチを使用する場合のシステム機能について正しく説明していますが、ほとんどのデスクトップ環境では、実際にこの目的でdbus
を使用するのではなく、実際に使用しています。たとえば、GNOMEでは、シャットダウンボタンがクリックされたときにdbus
のorg.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
を使用します。これが送信されると、dbus
はいくつかのチェックを実行して、メッセージを送信するユーザーにシャットダウンの実行が許可されているかどうかを判断し、許可されている場合はシステムをシャットダウンします。
dbus-send
を使用してこれをエミュレートできます。たとえば、dbus
を使用してシステムをシャットダウンするには、次のようにします。
dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown