Как я могу настроить 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
Другие вопросы по тегам