管理者パスワードを必要としないシャットダウンを行うにはどうすればよいですか?


49

複数の人が私のコンピューターにログインしている場合、Ubuntuはコンピューターをシャットダウンするときにスーパーユーザー認証を要求します。パスワードを要求されずにすべてのユーザーがコンピューターをシャットダウンできるようにするにはどうすればよいですか?


3
+1シャットダウンするためにパスワードを入力すると、ホームベースのPCの多くのユーザーが困るのではないかと思います。
リチャードホロウェイ

7
他のユーザーがログインしているときにコンピューターをシャットダウンすると、開いているウィンドウはどうなりますか?彼らの開かれた文書?自動保存しないものはすべて失われると思います。これは検討する価値があります。
トーベンGundtofte・ブルーン

「Ubuntuはコンピューターをシャットダウンするときにスーパーユーザー認証を必要とします」、Ubuntu 11.10では、メニューを使用してシャットダウンすると、スーパーユーザーの承認を要求せず、ログアウトとしてのみ機能し、ログインページに移動します。 q / 64073/11995、スーパーユーザーのパスワードを要求するようにUbuntuを構成する方法に興味がありますか?
ミクル

1
14.04の場合、後:参照askubuntu.com/questions/454039/...
Takkat

回答:


27

回避策は不要です。ポリシーを変更するだけで、複数のユーザーがログインしているときにシャットダウンおよび再起動の管理者として認証せずにシャットダウンできるようになります。

お好みのテキストエディターを使用して、ファイル/usr/share/polkit-1/actions/org.freedesktop.consolekit.policyを編集します。ルート権限が必要になります。

他のユーザーがログインしたときのシャットダウンに関するセクションを変更します

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

他のユーザーがログインしたときの再起動に関するセクション

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

また、複数のユーザーがログインしているときにPCをシャットダウンして再起動することができます。それを行うかどうかは別の質問です。


1
policykitの詳細へのリンクは次のとおり
リチャードホロウェイ

4
polkitが再インストールまたはアップグレードされるたびに、変更が消去されませんか?
ライアントンプソン

3
@Ryan、に従ってwiki.ubuntu.com/SecurityTeam/PolicyKitPermissions/12.04あなたは.pklaファイル内部の/ etc / polkit-1 / localauthorityを書くことができますが、私はその構文:)(ここではいくつかの情報についてはよく分からないのwiki。 archlinux.org/index.php/PolicyKit#Authorities
Joril

1
Flimmからの以下の回答の方が良いです。更新中に上書きされません askubuntu.com/a/251942/7472
Konstigt

1
再起動せずにルールをリロードする方法は?
サンキャッチャー

33

リチャード・ホロウェイの答えは、実際にはPolickKitの承認が与えられる方法ではありません。下にインストールされたファイル/usr/share/polkit-1/actionsは変更されることを意図していません。代わりに、の権限を変更する必要があります/etc/polkit-1/localauthority/50-local.d/

この質問に対してどのように行うかを以下に示します。

という名前のファイルを作成し、次のように/etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkla編集sudoeditします。

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes

次に.pkla、同じディレクトリに別のファイルを作成します。で終わる任意の名前を使用します(.pklaallow_all_users_to_restart.pkla:)、次の内容を入力します

[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes

参照:


これが非常に奇妙な問題の解決策であることが判明しました。PowerBrokerのインストール後(Active Directoryの認証用)12.04で、ユーザーはGUIを使用してコンピューターを再起動またはシャットダウンできませんでした(lightdmもindicator-sessionも機能しませんでした。ログイン画面に戻ります)。 policykit、すべてが機能しました。
korylprince

man pklocalauthorityにはUbuntuの情報があります
Konstigt 14年

4
名前が変更されていることに注意してください!これは14.04からです:/ usr / share / polkit-1 / actions $ grep multiple * org.freedesktop.login1.policy:<action id = "org.freedesktop.login1.power-off-multiple-sessions"> org.freedesktop .login1.policy:<action id = "org.freedesktop.login1.reboot-multiple-sessions"> org.freedesktop.login1.policy:<action id = "org.freedesktop.login1.suspend-multiple-sessions">組織.freedesktop.login1.policy:<action id = "org.freedesktop.login1.hibernate-multiple-sessions">
コンスティグ14年

1
16.04では、@ Konstigtの変更に加えて、私にとってはファイルが必要であり、両方のファイルに/var/lib/polkit-1/localauthority/50-local.d追加の行ResultAny=yesが必要でした。現在表示される警告メッセージはのみですがFailed to set wall message, ignoring: Interactive authentication required.、シャットダウンと再起動は正常に機能するようになりました。
-sigalor

@sigalorのコメントは、をsysctl poweroff -i必要とする追加とともに私のために働いたorg.freedesktop.login1.power-off-multiple-sessionsので、次を除いて同じ行で別のファイルを作成しましたAction=org.freedesktop.login1.power-off-multiple-sessions
wickedchicken

16

より良い方法があります。dbus-sendがインストールされている場合は、root権限にエスカレートする必要なく、 dbus経由でシャットダウンできます。

ドキュメントのあるページは思い出せませんが、あるArchlinuxユーザーがこれを理解しました。

シャットダウン:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

リブート:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Reboot

サスペンド:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1

休止状態:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate

よろしく。


うわー、それは...ハッキー。素晴らしい、まだハック
...-ジャサニズム

1
シャットダウンとリブートが11.10で動作しなくなったようです
Mikl

@Mikl halをインストールしてみてください(sudo apt-get install hal)
Epeli

12

HALは現在、廃止されており、最新のUbuntuリリースにはインストールされていないようです。

電源状態を管理するには、ConsoleKitおよびUPower dbusサービスを使用する必要があります

シャットダウン:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

再起動:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

サスペンド:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

休止状態:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate

Arch Linux フォーラムに感謝します

これは今のところPreciseとQuantalで機能しますが、FreedesktopのフォーカスがConsoleKitからsystemdに移行しているように見えるので、どれくらいの期間かわかりません。Canonicalが気にするかどうかわからない...


4

これは14.04で機能します。Flimmによる以前のIMO、正解のバリエーションの更新。

sudo mkdir -p /etc/polkit-1/localauthority/50-local.d
sudoedit /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown_reboot_suspend.pkla 

これを内側に貼り付けます:

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-multiple-sessions
ResultActive=yes

[Allow all users to reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-multiple-sessions
ResultActive=yes

[Allow all users to suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-multiple-sessions
ResultActive=yes

[Allow all users to ignore inhibit of shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-ignore-inhibit
ResultActive=yes

1

他のユーザーがターミナルウィンドウを開いrebootてrootとしてコマンドを発行する前にログインしているときに、再起動時にスーパーユーザーパスワードのプロンプトを回避する方法はありません。

sudo reboot

それでも、ユーザーアカウントのパスワードプロンプトをバイパスするように構成されていないsudo場合は、パスワードの入力も求められます。

心配しないでください、これらは良いものです。再起動はまれであり、単純な管理者パスワードプロンプトにより、誤って自分自身を選択する必要がなくなります。


visudoを編集し、sudoを入力するときにユーザーにパスワードを要求しないようにすることもできます。
Da1T

0

これは、コマンドラインから実行する場合にのみ問題になると思います。

もしそうなら、ここにあなたの問題に役立つリンクがあります。


いいえ、シャットダウン時にログインしている別のユーザーがいるかどうかを確認するポップアップウィンドウがあります。GUIを使用します。
イザヤ


-1

どうやら、gdmはrootとして実行されるため、GUIからrootなしでシャットダウンできます。Gnomeはgdmにシャットダウンするよう指示し、gdmがシャットダウンします。

スクリプトを使用して同様のことを行うことができます。BASHがどれほど便利かはわかりませんが、rootとして実行され、特定のシグナルを受信すると、shutdownコマンドを実行するスクリプトを作成できると思います。

これはセキュリティ上の問題を引き起こす可能性があることに注意してください。


彼が遭遇する可能性のある問題は、他の人がまだログインしていることを知らせるプロンプトが表示され、シャットダウン/再起動を有効にするためにsudoパスワードが必要だと思います。
デビッドトーマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.