
何か奇妙なものを観察してしまいました。
非特権ユーザーとしてArchLinuxシステムにログインし、 を実行しましたshutdown
。予想通り、次の結果が返されました。Must be root.
驚いたことに、shutdown now
それを実行すると(どうやら!)ない現在のユーザーにルート権限があるかどうかを確認します。マシンをシャットダウンするだけです。
私はこれを Plasma DE の tty とターミナルの両方で再現しようとしました。
私は最新のパッケージを搭載した 4.2.2 カーネルで Archlinux を実行しています。
これは関係ないと思うGUIポリシー。
tl;dr: 非ルートでシステムをシャットダウンするshutdown now
答え1
実際には私の回答ではありません。残念ながら、理由は不明ですが削除された回答を再投稿しただけです。
Arch Linux では、特定の状況下では、ルート権限なしで PC をシャットダウン/再起動/休止状態にできる場合があります。
Systemd での電力管理に関する Arch Linux Wiki ページ状態:
非特権ユーザーとして電源管理を行うには、polkit が必要です。ローカルの systemd-logind ユーザー セッションで、他のセッションがアクティブでない場合は、次のコマンドが root 権限なしで機能します。
システムctl電源オフ
システムctl再起動
systemctl サスペンド
systemctl ハイバネート
あなたがこれを行うことが許可されているかどうかを確認するには(つまり(polkit がインストールされていて、セッションが壊れていない場合)以下のコマンドを使用できます。
$ loginctl show-session $XDG_SESSION_ID --property=Active
Active=yes
私の Debian 8 のような他のシステムではsystemd
、このコマンドに対して同じ応答が返されるにもかかわらず、これは不可能です。
$ loginctl show-session $XDG_SESSION_ID --property=Active
Active=yes
$ systemctl reboot
==== AUTHENTICATING FOR org.freedesktop.login1.reboot ===
Authentication is required for rebooting the system.
Authenticating as: ,,, (myusername)
Password:
これは、polkit
Arch LinuxとDebianで異なる方法でデフォルトで設定されていることを示しています。Arch Linuxの人々は、これが よりも優れていると考えていますsudo
。Polkitのウィキページ:
Polkit は、システム全体の権限を制御するために使用されます。非特権プロセスが特権プロセスと通信するための体系的な方法を提供します。sudo などのシステムとは対照的に、プロセス全体にルート権限を付与するのではなく、集中化されたシステム ポリシーをより細かく制御できます。
いつものように、YMMVです。
については、非特権ユーザーに許可されているshutdown now
へのリダイレクトであると推測します。systemctl poweroff