Como posso configurar o dbus para permitir que o ssh-user suspenda o servidor?

9

Eu tento suspender meu servidor usando dbus e UPower. O servidor executa o Ubuntu LucidLynx 64bit.

Embora tudo funcione bem se eu estiver sentado diretamente na máquina, ele não funcionará via ssh. Se eu conectar ao servidor via ssh e tentar suspender a máquina usando dbus e upower, ele retornará

dbus.exceptions.DBusException: org.freedesktop.UPower.GeneralError: não autorizado

Alguém poderia me dizer como configurar o dbus para permitir que os usuários ssh suspendam a máquina?

Produnis
fonte
btw: Eu faço grep e uso o endereço dbus-session-atual ...
Produnis
2
Você pode dar alguns detalhes sobre o método que você está usando? Que linha de comando, ferramentas, etc.
Kees Cozinhe

Respostas:

12

Há duas maneiras básicas de fazer isso e uma solução alternativa:

Você precisa modificar /usr/share/polkit-1/actions/org.freedesktop.upower.policy, configurar a XDG_SESSION_COOKIEvariável de ambiente para o valor apropriado ou usar pm-suspend:

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

Aplique este 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>

(Para a <action id="org.freedesktop.upower.suspend">tag / seção), e também funcionará ...

ou

XDG_SESSION_COOKIE

Ao usar a área de trabalho, você verá que $XDG_SESSION_COOKIEtem um valor, mas em uma sessão ssh, ele tem outro. Armazene, XDG_SESSION_COOKIEpor exemplo, em um arquivo .dotfile ou algo assim, quando a área de trabalho for iniciada, e obtenha-a no seu script, que precisa ser executada no ssh.

pm-suspend

Ou você poderia simplesmente desistir de fazê-lo com dbuse UPowere apenas questão pm-suspendcomo root e acabar logo com isso! :-)

Peter V. Mørch
fonte
11
+1 para "apenas emitir pm-suspend como root e acabar logo com isso!" - disponível no pacote pm-utils.
Bjoern Dahlgren
5

Os arquivos abaixo /usr/share/polkit-1/actionsnão devem ser modificados.

Crie um arquivo chamado /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
fonte
Há um erro de digitação na resposta - a última linha deve dizer ResultAny, não AllowAny.
Emil Styrke