¿Cómo puedo configurar dbus para permitir que ssh-user suspenda el servidor?

9

Intento suspender mi servidor usando dbus y UPower. El servidor ejecuta Ubuntu LucidLynx 64bit.

Si bien todo funciona bien si estoy sentado directamente en la máquina, no funcionará a través de ssh. Si me conecto al servidor a través de ssh e intento suspender la máquina usando dbus y upower, devuelve

dbus.exceptions.DBusException: org.freedesktop.UPower.GeneralError: no autorizado

¿Alguien podría decirme cómo configurar dbus para permitir que los usuarios de ssh suspendan la máquina?

Produnis
fuente
por cierto: hago grep y uso la dirección de sesión dbus actual ...
Produnis
2
¿Puedes dar algunos detalles sobre el método que estás usando? Qué línea de comando, herramientas, etc.
Kees Cook

Respuestas:

12

Hay dos formas básicas de hacer esto y una solución alternativa:

O necesita modificar /usr/share/polkit-1/actions/org.freedesktop.upower.policy, establecer la XDG_SESSION_COOKIEvariable de entorno en el valor apropiado o usar pm-suspend:

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

Aplica este parche:

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

(A la <action id="org.freedesktop.upower.suspend">etiqueta / sección), y también funcionará ...

o

XDG_SESSION_COOKIE

Cuando use el escritorio, verá que $XDG_SESSION_COOKIEtiene un valor, pero en una sesión ssh, tiene otro. Almacene, XDG_SESSION_COOKIEpor ejemplo, en un archivo .dot o algo así cuando se inicie el escritorio y compérelo en su script que necesita hacerlo a través de ssh.

pm-suspender

O simplemente puede renunciar a hacerlo con dbusy UPowery emisión simplemente pm-suspendcomo root y acabar de una vez! :-)

Peter V. Mørch
fuente
1
+1 para "¡simplemente emita pm-suspend como root y termine de una vez!" - Disponible en el paquete pm-utils.
Bjoern Dahlgren
5

Los archivos debajo /usr/share/polkit-1/actionsno están destinados a ser modificados.

Crea un archivo llamado /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
usuario1435828
fuente
Hay un error tipográfico en la respuesta: la última línea debería decir ResultAny, no AllowAny.
Emil Styrke