Qual é a diferença entre um sistema com consolekit e outro sem ele?

Qual é a diferença entre um sistema com consolekit e outro sem ele?

Primeiro de tudo, estou usando o sistema de testes Debian com Openbox independente. Não tenho o systemd, apenas o sysvinit, e certamente não usarei o systemd .

Ontem minha caixa Debian começou a retornar mensagens como as abaixo:

Jun 14 18:08:10 morfikownia login[4722]: pam_unix(login:session): session opened for user morfik by LOGIN(uid=0)
Jun 14 18:08:10 morfikownia dbus[4391]: [system] Activating service name='org.freedesktop.ConsoleKit' (using servicehelper)
Jun 14 18:08:10 morfikownia dbus[4391]: [system] Activated service 'org.freedesktop.ConsoleKit' failed: Failed to execute program org.freedesktop.ConsoleKit: Success
...
Jun 14 18:08:19 morfikownia pulseaudio[4855]: [pulseaudio] sink.c: Default and alternate sample rates are the same.
Jun 14 18:08:19 morfikownia pulseaudio[4855]: [pulseaudio] source.c: Default and alternate sample rates are the same.
Jun 14 18:08:20 morfikownia dbus[4391]: [system] Activating service name='org.freedesktop.ConsoleKit' (using servicehelper)
Jun 14 18:08:20 morfikownia dbus[4391]: [system] Activated service 'org.freedesktop.ConsoleKit' failed: Failed to execute program org.freedesktop.ConsoleKit: Success
Jun 14 18:08:20 morfikownia pulseaudio[4855]: [pulseaudio] module-console-kit.c: GetSessionsForUnixUser() call failed: org.freedesktop.DBus.Error.Spawn.ExecFailed: Failed to execute program org.freedesktop.ConsoleKit: Success
Jun 14 18:08:20 morfikownia pulseaudio[4855]: [pulseaudio] module.c: Failed to load module "module-console-kit" (argument: ""): initialization failed.
Jun 14 18:08:20 morfikownia pulseaudio[4855]: [pulseaudio] main.c: Module load failed.
Jun 14 18:08:20 morfikownia pulseaudio[4855]: [pulseaudio] main.c: Failed to initialize daemon.

Além disso, cada sucomando gera o seguinte log:

Jun 14 18:08:50 morfikownia su[6043]: Successful su for root by morfik
Jun 14 18:08:50 morfikownia su[6043]: + /dev/pts/2 morfik:root
Jun 14 18:08:50 morfikownia su[6043]: pam_unix(su:session): session opened for user root by (uid=1000)
Jun 14 18:08:50 morfikownia dbus[4391]: [system] Activating service name='org.freedesktop.ConsoleKit' (using servicehelper)
Jun 14 18:08:50 morfikownia dbus[4391]: [system] Activated service 'org.freedesktop.ConsoleKit' failed: Failed to execute program org.freedesktop.ConsoleKit: Success

Consegui corrigir esses problemas.

No caso do PulseAudio, acabei de comentar estas linhas do /etc/pulse/default.paarquivo:

### If autoexit on idle is enabled we want to make sure we only quit
### when no local session needs us anymore.
#.ifexists module-console-kit.so
#load-module module-console-kit
#.endif
#.ifexists module-systemd-login.so
#load-module module-systemd-login
#.endif

No caso de todo o resto, tive que executar pam-auth-updatee desmarcar ConsoleKit Session Management:

 PAM profiles to enable
    [ ] encfs encrypted home directories                  
    [*] Unix authentication                               
    [ ] Mount volumes for user                            
    [*] GNOME Keyring Daemon - Login keyring management   
    [ ] ConsoleKit Session Management                     
    [ ] Inheritable Capabilities Management

E foi necessária uma pequena alteração no ~/.xinitrcarquivo:

#exec ck-launch-session dbus-launch --sh-syntax --exit-with-session openbox-session
exec openbox-session

porque quando estava tentando verificar uma lista de sessões, recebi o seguinte erro:

$ ck-list-sessions

** (ck-list-sessions:15584): WARNING **: Failed to get list of seats: Failed to execute program org.freedesktop.ConsoleKit: Success

Não há erros agora, mas não tenho ideia das alterações que essas etapas podem causar. Eu sei que o consolekit está morto de uma forma ou de outra, então isso acabaria acontecendo de qualquer maneira. Enquanto isso, estou lendoessa questãopara entender o que vai acontecer depois dessa mudança, mas não entendo muitas coisas.

Ele permite trocar de usuário sem fazer logout [muitos usuários podem estar logados no mesmo hardware ao mesmo tempo com um usuário ativo].

Eu posso fazer su usere muda sem problemas:

Jun 15 10:36:57 morfikownia su[103349]: Successful su for morfik2 by morfik
Jun 15 10:36:57 morfikownia su[103349]: + /dev/pts/5 morfik:morfik2
Jun 15 10:36:57 morfikownia su[103349]: pam_unix(su:session): session opened for user morfik2 by (uid=1000)

Também posso logar muitos usuários via ssh. Então, onde está a vantagem de usar o consolekit? Você poderia me dizer se excluí-lo pode causar algum problema de segurança e como posso ver a alteração? Porque parece que nada mudou.

Responder1

Ele permite trocar de usuário sem fazer logout [muitos usuários podem estar logados no mesmo hardware ao mesmo tempo com um usuário ativo].

Acredito que o consolekit forneceu um mecanismo para os aplicativos determinarem qual usuário estáativo, ou seja, sentado em frente ao computador. Isso difere do su userswitch desta forma:

  • Seu computador possui um assento atribuído a mouse, teclado, tela, microfone, câmera e áudio.
  • Você se senta em seu computador e faz login por meio de um console virtual (VC)/gerenciador de login gráfico (GLM).
  • Você bloqueia sua sessão e depois vai embora.
  • Alguém se senta e faz login por meio de um segundo VC/GLM.
  • Agora dois usuários estão logados (duas sessões), mas apenas o segundo estáativo.

Quais processos têm acesso ao hardware agora? Você certamente não quer que o segundo usuário inicie um programa de gravação que retenha acesso ao microfone/câmera/teclado quando você voltar para sua sessão.

Embora não esteja claro se o consolekit elimina o acesso ao hardware dos processos, pelo menos ele permite que um processo seja um "bom cidadão" e libere o hardware quando a sessão mudar.

Logins remotos esu

sshe su - usernão são afetados pelo consolekit. O Consolekit destina-se a gerenciar sessões para licenças. Um assento é um conjunto de dispositivos físicos (mouse, teclado, display, etc.) atribuídos a esse assento. Uma sessão é criada quando um usuário faz login no referido assento. Um assento pode ter muitas sessões, e o consolekit rastreia essas sessões e notifica os processos (que escutam) via DBUS quando a sessão muda.

Restrições de desligamento multiusuário

O Consolekit também pode ser usado em conjunto com o Policykit para evitar que os usuários desliguem o sistema quando diversas sessões estiverem abertas (mais de um usuário conectado).

Por que usar o consolakit?

Para um sistema de usuário único, o consolekit não tem nenhuma utilidade. Se você tem uma família compartilhando um único computador, ele permite que todos façam login e troquem de usuário sem sair e sem interferir no acesso ao hardware. IIRC, cada usuário também tem sua própria instância do xserver.

Alternativas

Não conheço alternativas para consolekit ou systemd. Se você precisar dessa funcionalidade, considere bifurcar o consolekit.

informação relacionada