web-dev-qa-db-ja.com

Ubuntu 16.04でスーパーユーザー権限なしで「reboot」と「poweroff」が機能するのはなぜですか?

shutdownおよびrebootにルート権限が必要な理由については、多くの質問があります。多くの良い答えも利用可能です。

しかし、わからないこともありますマルチユーザーでルート権限なしで再起動またはシャットダウンできる場合システムは非常に悪いアイデアです...それではなぜUbuntu 16.04でこれが可能ですか?

ターミナルでpoweroffまたはrebootと入力してヒットしたとき Enter、実際にシャットダウン/リブートします!

poweroffおよびrebootがroot権限を必要としない場合は問題ありませんが、なぜsuspendはroot権限を必要としますか?ターミナルでsuspendと入力してヒットすると Enter、停止せず、代わりに停止します...そして、pm-suspendを実行すると、Sudoが必要です。

10
Severus Tux

私にとって、poweroffrebootもUbuntu 16.04ではパスワードが必要です。

ただし、これを行うには、たとえば「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'.

おそらく、実際に別のユーザーがログインしていることを認識するのに十分な「スマート」です。

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

編集:自分で試してみました。 fooとしてログインしている場合、自分(Sudoグループに属する)を認証する必要があります。 fooがまだログインしている状態で自分でリブートする場合、パスワードなしでsystemctl reboot -iと入力する必要があります。違いは、システムが私がSudoグループに属していることを知っていることだと思います。

編集2:セブルス・タックスが述べたように、systemctl suspend -iは以前の編集のsystemctl reboot -iと同様に動作しました。

3
Ray