Я пытаюсь приостановить работу своего сервера, используя 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
Примените этот патч:
(К
<action id="org.freedesktop.upower.suspend">
тегу / разделу), и это тоже будет работать ...или
XDG_SESSION_COOKIE
Когда вы используете рабочий стол, вы увидите, что оно
$XDG_SESSION_COOKIE
имеет одно значение, а в сеансе ssh - другое. Храните,XDG_SESSION_COOKIE
например, в файле .dotfile или в другом месте при запуске рабочего стола и добавьте его в свой скрипт, который должен делать это через ssh.вечера приостановить
Или вы можете просто отказаться от этого
dbus
иUPower
просто выдатьpm-suspend
от имени root и покончить с этим! :-)источник
Файлы в
/usr/share/polkit-1/actions
не предназначены для изменения.Создайте файл с именем
/etc/polkit-1/localauthority/50-local.d/allow_all_ssh-users_to_upower.pkla
источник
ResultAny
, нетAllowAny
.