我尝试使用 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 暂停
或者你可以放弃这样做dbus
,UPower
只需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