D-Bus

如何以使用者身份通過 ConsoleKit DBus 消息關閉系統?

  • August 20, 2015

我找到了以下命令行來關閉 Debian/GNU Linux 系統

dbus-send \
 --system \
 --dest=org.freedesktop.ConsoleKit \
 --type=method_call \
 --print-reply \
 --reply-timeout=2000 \
 /org/freedesktop/ConsoleKit/Manager \
 org.freedesktop.ConsoleKit.Manager.Stop

如果我以超級使用者身份執行命令,它會起作用,但作為非特權使用者,它會說:

Error org.freedesktop.ConsoleKit.Manager.NotPrivileged: Not Authorized

我想知道是否可以修改這樣的命令,使其與 PolicyKit 互動,它可以將關閉系統的權限授予普通使用者。

根據這個Debian 錯誤報告,這是由於 ConsoleKit 在版本 0.4.1 和 0.4.2 之間的上游更改。該執行緒包含一些建議和解決方法,其中之一是安裝直接與 ConsoleKit 對話的顯示管理器(如 GDM 或 lightdm)。

如果您使用 consolekit > 0.4.1(wheezy 和更新),這將不再適用。要讓它再次工作,請添加

session optional        pam_loginuid.so

/etc/pam.d/common-session.

引用自:https://unix.stackexchange.com/questions/29637