web-dev-qa-db-ja.com

ssh経由でログインしている他のユーザーがいる場合は、シャットダウン/サスペンドを無効にします

私は、ubuntuのバージョン9.04で、他のユーザーがログインしている場合、ユーザーがシステムをシャットダウン(および多分サスペンド)することを無効にすることが可能であったことを思い出します。policykitなどのようなもの。

11.04で行うことは可能ですか?

ありがとう

編集:

誰かが(自分のリスクのため)必要な場合、/ usr/lib/pm-utils/bin/pm-actionを少し変更するだけで、ユーザーがログインしているだけの場合、またはユーザーがSudo pm-suspendを実行するときにマシンを一時停止できます。おそらく最良のコードではありませんが、今のところは動作します。

diff -r 805887c5c0f6 pm-action
--- a/pm-action Wed Jun 29 23:32:01 2011 +0200
+++ b/pm-action Wed Jun 29 23:37:23 2011 +0200
@@ -47,6 +47,14 @@
    exit 1
 fi

+if [ "$(id -u )" == 0 -o `w -h | cut -f 1 -d " " | sort | uniq | wc -l` -eq 1 ]; then
+                echo "either youre root or root isnt here and youre only user, continuing" 1>&2
+                else
+                echo "Not suspending, root is here or there is more users" 1>&2
+                exit 2
+                fi
+
+
 remove_suspend_lock()
 {
    release_lock "${STASHNAME}.lock"

質問はまだありますが、複数のユーザーがログインしているときにシャットダウンまたはサスペンドを禁止することは可能ですか(pm-suspendまたはhalt(または他のハック)を書き換えることなく)?

15
Denwerko

更新(enzotibに感謝):

パッケージの更新により変更が上書きされる可能性があるため、元の回答にリストしたファイルはnotで編集する必要があります。

代わりに、pklocalauthorityマニュアルページで説明されているように、/var/lib/polkit-1/localauthority/に配置された構成ファイルを使用してPolicyKitを構成する必要があります。

元の回答:

HALの廃止により、これは/usr/share/polkit-1/actions/org.freedesktop.consolekit.policyで制御されるようになりました

以下に示す2つのアクションセクションのallow_activenoに設定します(デフォルトではauth_admin_keepに設定されています)。

  <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>no</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>no</allow_active>
    </defaults>
  </action>
1
scottl