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