¿Cuál es la diferencia entre un sistema con consolekit y uno sin él?

¿Cuál es la diferencia entre un sistema con consolekit y uno sin él?

En primer lugar, estoy usando el sistema de prueba Debian con Openbox independiente. No tengo systemd, solo sysvinit, y ciertamente no usaré systemd.

Ayer mi caja Debian comenzó a devolver mensajes como los siguientes:

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.

Además, cada sucomando genera el siguiente registro:

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

Logré solucionar estos problemas.

En el caso de PulseAudio, acabo de comentar estas líneas del /etc/pulse/default.paarchivo:

### 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

En el caso de todo lo demás, tuve que ejecutar pam-auth-updatey 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

Y fue necesario un pequeño cambio en el ~/.xinitrcarchivo:

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

porque cuando intentaba verificar una lista de sesiones, recibí el siguiente error:

$ ck-list-sessions

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

Ahora no hay errores, pero no tengo idea de qué cambios pueden causar estos pasos. Sé que el kit de consola está muerto de una forma u otra, por lo que, en última instancia, esto sucedería de todos modos. Mientras tanto estoy leyendoesta preguntapara entender qué pasará después de este cambio, pero no entiendo muchas cosas.

Permite cambiar de usuario sin cerrar sesión [muchos usuarios pueden iniciar sesión en el mismo hardware al mismo tiempo con un usuario activo].

Puedo hacerlo su usery cambia sin problema:

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)

También puedo iniciar sesión para muchos usuarios a través de ssh. Entonces, ¿cuál es la ventaja de utilizar consolekit? ¿Podría decirme si eliminarlo puede causar algún problema de seguridad y cómo puedo ver el cambio? Porque parece que nada ha cambiado.

Respuesta1

Permite cambiar de usuario sin cerrar sesión [muchos usuarios pueden iniciar sesión en el mismo hardware al mismo tiempo con un usuario activo].

Creo que consolekit proporcionó un mecanismo para que las aplicaciones determinen qué usuario esactivo, es decir, sentado frente al ordenador. Esto se diferencia del su userinterruptor de esta manera:

  • Su computadora tiene un asiento asignado: mouse, teclado, pantalla, micrófono, cámara y audio.
  • Usted se sienta frente a su computadora e inicia sesión a través de una consola virtual (VC)/administrador de inicio de sesión gráfico (GLM).
  • Bloqueas tu sesión y luego te marchas.
  • Alguien más se sienta e inicia sesión a través de un segundo VC/GLM.
  • Ahora dos usuarios han iniciado sesión (dos sesiones), pero sólo el segundo estáactivo.

¿Qué procesos tienen acceso al hardware ahora? Ciertamente no desea que el segundo usuario inicie un programa de grabación que conserve el acceso al micrófono/cámara/teclado cuando regrese a su sesión.

Si bien no tengo claro si consolekit elimina el acceso al hardware de los procesos, al menos permite que un proceso sea un "buen ciudadano" y libere hardware cuando cambia la sesión.

Inicios de sesión remotos ysu

sshy su - userno se ven afectados por el consolekit. Consolekit está destinado a gestionar sesiones por asientos. Un asiento es un conjunto de dispositivos físicos (ratón, teclado, pantalla, etc.) asignados a dicho asiento. Se crea una sesión cuando un usuario inicia sesión en dicho asiento. Un asiento puede tener muchas sesiones, y consolekit rastrea esas sesiones y notifica a los procesos (que escuchan) a través de DBUS cuando la sesión cambia.

Restricciones de apagado multiusuario

Consolekit también se puede utilizar junto con Policykit para evitar que los usuarios apaguen el sistema cuando hay varias sesiones abiertas (más de un usuario ha iniciado sesión).

¿Por qué utilizar consolkit?

Para un sistema de usuario único, consolekit no tiene ningún uso. Si tiene una familia que comparte una sola computadora, permite que todos inicien sesión y cambien de usuario sin cerrar sesión y sin interferir con el acceso al hardware. IIRC, cada usuario también tiene su propia instancia de xserver.

Alternativas

No conozco alternativas a consolekit o systemd. Si necesita esta funcionalidad, podría considerar bifurcar el kit de consola.

información relacionada