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?
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
:
/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.
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! :-)
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