我如何配置 dbus 以允许 ssh 用户暂停服务器?

我如何配置 dbus 以允许 ssh 用户暂停服务器?

我尝试使用 dbus 和 UPower 暂停我的服务器。该服务器运行 Ubuntu LucidLynx 64 位。

如果我直接坐在机器旁,一切都会正常,但通过 ssh 就不行了。如果我通过 ssh 连接到服务器并尝试使用 dbus 和 upower 暂停机器,它会返回

dbus.exceptions.DBusException:org.freedesktop.UPower.GeneralError:未授权

谁能告诉我如何配置 dbus 以允许 ssh 用户挂起机器?

答案1

有两种基本方法可以实现此目的以及一种解决方法:

您需要修改/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 执行此操作的脚本中获取它。

pm 暂停

或者你可以放弃这样做dbusUPower只需pm-suspend以 root 身份发出并完成它!:-)

答案2

下面的文件/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

相关内容