Я пытаюсь приостановить работу своего сервера, используя dbus и UPower. На сервере работает Ubuntu LucidLynx 64bit.
Хотя все работает нормально, если я сижу прямо за машиной, она не будет работать через ssh. Если я подключаюсь к серверу через ssh и пытаюсь приостановить работу компьютера, используя dbus и upower, он возвращает
dbus.exceptions.DBusException: org.freedesktop.UPower.GeneralError: не авторизован
Может ли кто-нибудь сказать мне, как настроить dbus, чтобы ssh-пользователи могли приостановить работу машины?
Существует два основных способа, которыми это может быть сделано и обходное решение:
Любой необходимо изменить /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
как базируются и заканчивают его!:-)
Файлы согласно /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