Snažím se pozastavit svůj server pomocí dbus a UPower. Na serveru běží Ubuntu LucidLynx 64bit.
I když vše funguje dobře, pokud sedím přímo u počítače, nebude to fungovat přes ssh.
Pokud se připojím k serveru přes ssh a pokusím se počítač pozastavit pomocí dbus a upower, vrátí to
dbus.exceptions.DBusException:org.freedesktop.UPower.GeneralError:není autorizováno
Mohl by mi prosím někdo říct, jak nakonfigurovat dbus, aby umožnil uživatelům ssh pozastavit počítač?
Přijatá odpověď:
Toho lze provést dvěma základními způsoby a řešením:
Buď musíte upravit /usr/share/polkit-1/actions/org.freedesktop.upower.policy
, nastavte XDG_SESSION_COOKIE
proměnnou prostředí na příslušnou hodnotu nebo použijte pm-suspend
:
Úprava /usr/share/polkit-1/actions/org.freedesktop.upower.policy
Použijte tuto opravu:
--- /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>
(Na <action id="org.freedesktop.upower.suspend">
tag/section) a bude to fungovat také...
nebo
XDG_SESSION_COOKIE
Když používáte plochu, uvidíte, že $XDG_SESSION_COOKIE
má jednu hodnotu, ale v relaci ssh má jinou. Uložit XDG_SESSION_COOKIE
např. v souboru .dotfile nebo tak něco při spuštění plochy a zdroj ve vašem skriptu, který to potřebuje udělat přes ssh.
odp.-pozastavení
Nebo to můžete prostě vzdát pomocí dbus
a UPower
a stačí vydat pm-suspend
jako root a mít to za sebou! 🙂