Как я могу настроить dbus, чтобы позволить ssh-пользователю приостановить работу сервера?

9

Я пытаюсь приостановить работу своего сервера, используя dbus и UPower. На сервере работает Ubuntu LucidLynx 64bit.

Хотя все работает нормально, если я сижу прямо за машиной, через ssh не будет работать. Если я подключаюсь к серверу через ssh и пытаюсь приостановить работу компьютера, используя dbus и upower, он возвращает

dbus.exceptions.DBusException: org.freedesktop.UPower.GeneralError: не авторизовано

Может ли кто-нибудь сказать мне, как настроить dbus, чтобы позволить ssh-пользователям приостановить работу машины?

Produnis
источник
Кстати: я делаю grep и использую текущий адрес сессии dbus ...
Produnis
2
Можете ли вы дать некоторые подробности о методе, который вы используете? Какая командная строка, инструменты и т. Д.
Kees Cook

Ответы:

12

Есть два основных способа сделать это и обойти это:

Либо вам нужно изменить /usr/share/polkit-1/actions/org.freedesktop.upower.policy, установить XDG_SESSION_COOKIEпеременную среды на соответствующее значение или использовать pm-suspend:

модифицирующий /usr/share/polkit-1/actions/org.freedesktop.upower.policy

Примените этот патч:

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

<action id="org.freedesktop.upower.suspend">тегу / разделу), и это тоже будет работать ...

или

XDG_SESSION_COOKIE

Когда вы используете рабочий стол, вы увидите, что оно $XDG_SESSION_COOKIEимеет одно значение, а в сеансе ssh - другое. Храните, XDG_SESSION_COOKIEнапример, в файле .dotfile или в другом месте при запуске рабочего стола и добавьте его в свой скрипт, который должен делать это через ssh.

вечера приостановить

Или вы можете просто отказаться от этого dbusи UPowerпросто выдать pm-suspendот имени root и покончить с этим! :-)

Петр В. Мёрч
источник
1
+1 за "просто выпустите pm-suspend от имени root и покончите с этим!" - доступно из пакета pm-utils.
Бьерн Дальгрен
5

Файлы в /usr/share/polkit-1/actionsне предназначены для изменения.

Создайте файл с именем /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
источник
В ответе есть опечатка - последняя строка должна сказать ResultAny, нет AllowAny.
Эмиль Стирке