Ubuntu 16.04 では、スーパーユーザー権限がなくても `reboot` と `poweroff` が機能するのはなぜですか?

Ubuntu 16.04 では、スーパーユーザー権限がなくても `reboot` と `poweroff` が機能するのはなぜですか?

shutdownなぜルート権限が必要なのか、その理由については多くの疑問がありますreboot。適切な回答も多数あります。

でも、分からないことがある: ルート権限なしで再起動やシャットダウンができない場合マルチユーザーシステムはひどいアイデア...では、なぜこれが Ubuntu 16.04 で可能なのでしょうか?

ターミナルにpoweroffまたは と入力して を押すと、確かにシャットダウン/再起動します。rebootEnter

および には root 権限が必要ありませんpoweroffreboot、 にはなぜsuspendroot 権限が必要なのでしょうか?suspendターミナルに と入力して を押すとEnter、サスペンドされずにスタックしてしまいます... また、 を実行するとpm-suspendが必要ですsudo

答え1

私の場合、Ubuntu 16.04 ではどちらもパスワードは必要ありpoweroffません。reboot

ただし、これを実現するには、たとえば「foo」というユーザー アカウントを作成し、そのユーザーまたは自分自身として localhost に ssh する必要がありました。これを行うと、自分自身を認証する必要があります。別のユーザーがログインしていることが認識されるようです。

たとえば、次のようなメッセージが表示されます。

User foo is logged in on sshd.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.

おそらく、実際に別のユーザーがログインしているかどうかを認識できるほど「スマート」です。

(常に root として認証するのが良いという意見には同意します。他のユーザーがログインしていない場合でも、重要なプロセスがバックグラウンドで実行され、何らかの計算を実行している場合があります。)

編集: 自分で試してみました。foo としてログインしている場合は、自分自身 (sudo グループのメンバー) を認証する必要があります。foo がログインしたまま自分自身として再起動すると、systemctl reboot -iパスワードなしで入力する必要があります。違いは、システムが私が sudo グループに属していることを認識しているということだと思います。

編集 2: Severus Tux が指摘したように、前回の編集systemctl suspend -iと同様に動作しました。systemctl reboot -i

関連情報