我发现以下命令行可以关闭 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交互,它可以向普通用户授予关闭系统的权限。
答え1
根据这个Debian 错误报告,这是由于 ConsoleKit 版本 0.4.1 和 0.4.2 之间的上游更改所致。该线程包含一些建议和解决方法,其中之一是安装直接与 ConsoleKit 对话的显示管理器(如 GDM 或 lightdm)。
答え2
如果您使用consolekit > 0.4.1(喘息和更新),这将不再开箱即用。要让它再次工作,请添加
session optional pam_loginuid.so
到 /etc/pam.d/common-session
。
答え3
就我而言:
- Debian 8 amd64;
- 通量盒;
- startx(没有任何 DM)。
- 安装的软件包:
dbus
dbus-X11
consolekit
policykit-1
libpam-ck-connector
这个解决方案效果很好:
创建一个包含以下内容的 custom-actions.pkla 文件:
sudo nano /var/lib/polkit-1/localauthority/50-local.d/custom-actions.pkla
将其放入文件中。
[Actions for xbmc user]
Identity=unix-user:xbmc
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*;org.freedesktop.udisks.*
ResultAny=yes
ResultInactive=no
ResultActive=yes