web-dev-qa-db-fra.com

Comment configurer dbus pour permettre à ssh-user de suspendre le serveur?

J'essaie de suspendre mon serveur avec dbus et UPower. Le serveur exécute Ubuntu LucidLynx 64 bits.

Bien que tout fonctionne bien si je suis assis directement à la machine, cela ne fonctionnera pas avec ssh. Si je me connecte au serveur via ssh et que je tente de suspendre la machine à l’aide de dbus et upower, cela rend

dbus.exceptions.DBusException: org.freedesktop.UPower.GeneralError: non autorisé

Quelqu'un pourrait-il me dire comment configurer dbus afin de permettre aux utilisateurs de ssh de suspendre la machine?

8
Produnis

Cela peut être fait de deux manières principales et une solution de contournement:

Soit vous devez modifier /usr/share/polkit-1/actions/org.freedesktop.upower.policy, définir la variable d’environnement XDG_SESSION_COOKIE sur la valeur appropriée ou utiliser pm-suspend:

Modification de /usr/share/polkit-1/actions/org.freedesktop.upower.policy

Appliquez ce patch:

--- /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>

(Vers la balise/section <action id="org.freedesktop.upower.suspend">) et ça fonctionnera aussi ...

ou

XDG_SESSION_COOKIE

Lorsque vous utilisez le bureau, vous verrez que $XDG_SESSION_COOKIE a une valeur, mais dans une session SSH, il en a une autre. Stocker XDG_SESSION_COOKIE par exemple dans un fichier .dot ou quelque chose lorsque le bureau démarre, puis source dans votre script qui doit le faire sur ssh.

pm-suspendre

Ou vous pouvez simplement cesser de le faire avec dbus et UPower et simplement lancer pm-suspend en tant que root et en finir avec! :-)

12
Peter V. Mørch

Les fichiers sous /usr/share/polkit-1/actions ne doivent pas être modifiés.

Créez un fichier nommé /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
5
user1435828