Como faço para desligar um sistema através de uma mensagem do ConsoleKit DBus como usuário?

4

Eu encontrei a seguinte linha de comando para desligar um sistema 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

Funciona se eu executar o comando como superusuário, mas como um usuário não privilegiado diz:

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

Eu gostaria de saber se é possível modificar tal comando de tal forma que, interagindo com o PolicyKit, ele possa conceder o privilégio de desligar o sistema para um usuário normal.

    
por enzotib 21.01.2012 / 14:49

3 respostas

2

De acordo com este relatório de bugs do Debian , isso se deve a uma mudança no upstream ConsoleKit entre as versões 0.4.1 e 0.4.2. O encadeamento contém algumas sugestões e soluções alternativas, uma das quais é instalar um gerenciador de exibição (como GDM ou lightdm) que fala diretamente com o ConsoleKit.

    
por 22.01.2012 / 07:55
2

Se você usa o consolekit > 0.4.1 (wheezy e mais recente) isso não funciona mais fora da caixa. Para fazê-lo funcionar, adicione

session optional        pam_loginuid.so

para /etc/pam.d/common-session .

    
por 05.04.2012 / 05:22
0

No meu caso:

  • Debian 8 amd64;
  • fluxbox;
  • startx (sem nenhum DM).
  • pacotes instalados:
    • dbus
    • dbus-X11
    • consolekit
    • policykit-1
    • libpam-ck-connector

Esta solução funciona bem:

Create a custom-actions.pkla file with the following contents:

sudo nano /var/lib/polkit-1/localauthority/50-local.d/custom-actions.pkla

Put this in the file.

[Actions for xbmc user]
Identity=unix-user:xbmc
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*;org.freedesk​top.udisks.*
ResultAny=yes
ResultInactive=no
ResultActive=yes
    
por 20.08.2015 / 16:35