Deaktivieren Sie das Herunterfahren / Anhalten, wenn ein anderer Benutzer über ssh angemeldet ist

15

Ich erinnere mich, dass es in Ubuntu-Versionen um 9.04 möglich war, den Benutzer zu deaktivieren, um das System herunterzufahren (und möglicherweise auch auszusetzen), wenn ein anderer Benutzer angemeldet war.

Ist es möglich, in 11.04 zu tun?

Vielen Dank

bearbeiten:

Wenn jemand (auf eigenes Risiko) eine Änderung in / usr / lib / pm-utils / bin / pm-action benötigt, kann er den Computer anhalten, wenn er nur als Benutzer angemeldet ist oder wenn der Benutzer sudo pm-suspend ausführt. Wahrscheinlich nicht das beste Stück Code, aber für jetzt funktioniert.

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"

Die Frage steht noch, ist es möglich, das Herunterfahren oder Anhalten zu verbieten, wenn mehr als ein Benutzer angemeldet ist (ohne pm-suspend oder halt (oder einen anderen Hack) umzuschreiben)?

Denwerko
quelle

Antworten:

1

Update (danke an enzotib):

Die Dateien, die ich in der ursprünglichen Antwort aufgeführt habe, sollten nicht bearbeitet werden, da ein Paketupdate Ihre Änderungen überschreiben kann.

PolicyKit sollte stattdessen mithilfe der Konfigurationsdateien konfiguriert werden /var/lib/polkit-1/localauthority/, die auf der pklocalauthorityHandbuchseite beschrieben werden.

Ursprüngliche Antwort:

Mit dem Verfall von HAL wird dies nun gesteuert /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy

Setzen Sie allow_activein den beiden unten gezeigten Aktionsbereichen auf no(sie sind auth_admin_keepstandardmäßig auf eingestellt):

  <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>
scottl
quelle
1
Sie sollten Ihre Richtliniendatei in einem Ihrer /var/lib/polkit-1/localauthority/*.dVerzeichnisse festlegen , wie im pklocalauthorityHandbuch erläutert . Vermeiden Sie es, Dateien zu ändern, die von Paketen (als /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy) installiert wurden, mit Ausnahme der Konfigurationsdateien in /etc/.
Enzotib
@scottl Kannst du deine Antwort bearbeiten, um sie richtig zu lesen? Wie es jetzt liest, ist es total verwirrend.
Jorge Castro