Ich versuche, meinen Server mit dbus und UPower anzuhalten. Auf dem Server läuft Ubuntu LucidLynx 64bit.
Wenn ich direkt an der Maschine sitze, funktioniert alles einwandfrei, aber über ssh funktioniert es nicht.
Wenn ich mich über ssh mit dem Server verbinde und versuche, die Maschine mit dbus und upower zu suspendieren, gibt sie zurück
dbus.exceptions.DBusException:org.freedesktop.UPower.GeneralError:nicht autorisiert
Könnte mir bitte jemand sagen, wie ich dbus konfigurieren muss, um ssh-Benutzern zu erlauben, die Maschine zu suspendieren?
Akzeptierte Antwort:
Dafür gibt es zwei grundlegende Möglichkeiten und einen Workaround:
Entweder müssen Sie /usr/share/polkit-1/actions/org.freedesktop.upower.policy
ändern , legen Sie den XDG_SESSION_COOKIE
fest Umgebungsvariable auf den entsprechenden Wert oder verwenden Sie pm-suspend
:
Ändern von /usr/share/polkit-1/actions/org.freedesktop.upower.policy
Wenden Sie 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 diesen $XDG_SESSION_COOKIE
hat einen Wert, aber in einer SSH-Sitzung hat es einen anderen. Speichern Sie XDG_SESSION_COOKIE
z.B. in einer .dot-Datei oder so etwas, wenn der Desktop startet, und beziehen Sie es in Ihr Skript, das dies über ssh tun muss.
pm-suspend
Oder Sie könnten es einfach aufgeben, es mit dbus
zu tun und UPower
und geben Sie einfach pm-suspend
aus als root und fertig! 🙂