Wie kann ich dbus so konfigurieren, dass ssh-user den Server anhalten kann?

9

Ich versuche, meinen Server mit dbus und UPower anzuhalten. Auf dem Server wird Ubuntu LucidLynx 64bit ausgeführt.

Während alles gut funktioniert, wenn ich direkt an der Maschine sitze, funktioniert es nicht über ssh. Wenn ich über ssh eine Verbindung zum Server herstelle und versuche, den Computer mit dbus und upower anzuhalten, gibt er etwas zurück

dbus.exceptions.DBusException: org.freedesktop.UPower.GeneralError: nicht autorisiert

Könnte mir bitte jemand sagen, wie man dbus konfiguriert, damit ssh-Benutzer den Computer anhalten können?

Produnis
quelle
Übrigens: Ich grep und benutze die aktuelle dbus-session-adresse ...
Produnis
2
Können Sie einige Details zu der von Ihnen verwendeten Methode angeben? Welche Befehlszeile, Werkzeuge usw.
Kees Cook

Antworten:

12

Es gibt zwei grundlegende Möglichkeiten und eine Problemumgehung:

Entweder müssen Sie Änderungen vornehmen /usr/share/polkit-1/actions/org.freedesktop.upower.policy, die XDG_SESSION_COOKIEUmgebungsvariable auf den entsprechenden Wert setzen oder Folgendes verwenden pm-suspend:

Ändern /usr/share/polkit-1/actions/org.freedesktop.upower.policy

Wende diesen Patch an:

--- /usr/share/polkit-1/actions/org.freedesktop.upower.policy.orig  2011-11-16 19:06:59.274055248 +0100
+++ /usr/share/polkit-1/actions/org.freedesktop.upower.policy   2011-11-16 19:11:15.178864922 +0100
@@ -21,6 +21,7 @@
     <defaults>
       <allow_inactive>no</allow_inactive>
       <allow_active>yes</allow_active>
+      <allow_any>yes</allow_any>
     </defaults>
   </action>

(Zum <action id="org.freedesktop.upower.suspend">Tag / Abschnitt), und es wird auch funktionieren ...

oder

XDG_SESSION_COOKIE

Wenn Sie den Desktop verwenden, sehen Sie, dass $XDG_SESSION_COOKIEdieser einen Wert hat, in einer SSH-Sitzung jedoch einen anderen. Speichern Sie XDG_SESSION_COOKIEzB in einer .dot-Datei oder etwas anderem, wenn der Desktop gestartet wird, und geben Sie es in Ihrem Skript ein, das dies über ssh ausführen muss.

pm-suspend

Oder Sie könnten nur aufgeben , es mit zu tun dbusund UPowerund nur Ausgabe pm-suspendals root und bekommen es über mit! :-)

Peter V. Mørch
quelle
1
+1 für "Gib einfach pm-suspend als root aus und überwinde es!" - Erhältlich im Paket pm-utils.
Bjoern Dahlgren
5

Dateien unter /usr/share/polkit-1/actionssollen nicht geändert werden.

Erstellen Sie eine Datei mit dem Namen /etc/polkit-1/localauthority/50-local.d/allow_all_ssh-users_to_upower.pkla

[Allow all ssh-users to upower]
Identity=unix-group:ssh-users
Action=org.freedesktop.upower.policy
ResultInactive=no
ResultActive=yes
AllowAny=yes
user1435828
quelle
Die Antwort enthält einen Tippfehler - in der letzten Zeile sollte ResultAnynicht stehen AllowAny.
Emil Styrke