パッケージのインストール/削除/更新、または管理者権限を必要とする変更を行うと、sudo
を持つ管理者ユーザーのパスワードの入力を求められます。 特権–これはGUIと端末の両方を介して行われます。
ただし、ターミナルを介してシャットダウンして再起動しようとすると、root
である必要があると文句を言います。 :
$ reboot
reboot: Need to be root
$ shutdown now
shutdown: Need to be root
ただし、右上の歯車を介してこれらのアクションを実行するときに、パスワードの入力を求められることはありません。
なぜこの不一致があるのですか?
ベストアンサー
歯車のシャットダウンは、マシンのシャットダウンが許可されているかどうかを確認します。これはPolicyKitを介して行われます。ファイル/usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
内のこのステートメントをシャットダウンする場合 チェックされています:
<action id="org.freedesktop.consolekit.system.stop">
<description>Stop the system</description>
<message>System policy prevents stopping the system</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
PolicyKitはdbus-send
をトリガーします 指図。シャットダウンの場合は次のようになります:
dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
root-Privilegesを使用してバックグラウンドで実行されているデーモンがあり、shutdownコマンドを呼び出します。
コマンドラインを介して「古い方法」でマシンをシャットダウンできるようにしたい場合(shutdown, reboot, halt, ...
)、次に、これらのコマンドにsuid-Bitを追加する必要があります。ただし、シェルにアクセスできるシステム上のすべてのユーザーがマシンをシャットダウンする可能性があることに注意してください。