如何配置dbus以允许ssh-user挂起服务器?

我尝试使用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 @@  no yes + yes   

(对于标签/部分),它也会起作用……

要么

XDG_SESSION_COOKIE

当您使用桌面时,您会看到$XDG_SESSION_COOKIE有一个值,但在ssh会话中,它有另一个值。 将XDG_SESSION_COOKIE存储在.dot文件或桌面启动时的某些内容中,并将其源于需要通过ssh执行的脚本中。

PM-暂停

或者你可以放弃使用dbusUPower然后以root身份发出pm-suspend并将其结束! 🙂

/usr/share/polkit-1/actions下的文件/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