Was ist der Unterschied zwischen einem System mit Consolekit und einem ohne?

Was ist der Unterschied zwischen einem System mit Consolekit und einem ohne?

Zunächst einmal verwende ich ein Debian-Testsystem mit Standalone-Openbox. Ich habe kein systemd, nur sysvinit, und ich werde systemd ganz sicher nicht verwenden.

Gestern begann meine Debian-Box, Nachrichten wie die folgenden zurückzugeben:

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.

Darüber hinaus sugeneriert jeder Befehl das folgende Protokoll:

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

Es gelang mir, diese Probleme zu beheben.

Im Fall von PulseAudio habe ich einfach diese Zeilen aus der /etc/pulse/default.paDatei auskommentiert:

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

Bei allem anderen musste ich Folgendes ausführen pam-auth-updateund deaktivieren 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

Und es war eine kleine Änderung an der ~/.xinitrcDatei nötig:

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

denn als ich versuchte, eine Sitzungsliste zu überprüfen, erhielt ich die folgende Fehlermeldung:

$ ck-list-sessions

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

Es gibt jetzt keine Fehler, aber ich habe keine Ahnung, welche Änderungen diese Schritte verursachen können. Ich weiß, dass das Consolekit auf die eine oder andere Weise tot ist, also würde dies letztendlich sowieso passieren. In der Zwischenzeit lese ichdiese Frageum zu verstehen, was nach dieser Änderung passieren wird, aber ich verstehe vieles nicht.

Es ermöglicht den Benutzerwechsel ohne Abmeldung [mehrere Benutzer können gleichzeitig auf derselben Hardware angemeldet sein, wobei ein Benutzer aktiv ist].

Das kann ich tun su user, und es ändert sich problemlos:

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)

Ich kann auch viele Benutzer über SSH anmelden. Wo ist also der Vorteil der Verwendung von Consolekit? Können Sie mir sagen, ob das Löschen Sicherheitsprobleme verursachen kann und wie ich die Änderung sehen kann? Denn es sieht so aus, als hätte sich nichts geändert.

Antwort1

Es ermöglicht den Benutzerwechsel ohne Abmeldung [mehrere Benutzer können gleichzeitig auf derselben Hardware angemeldet sein, wobei ein Benutzer aktiv ist].

Ich glaube, Consolekit hat einen Mechanismus bereitgestellt, mit dem Anwendungen feststellen können, welcher Benutzeraktiv, also vor dem Computer sitzend. Dies unterscheidet sich vom su userSwitch in folgender Weise:

  • Ihr Computer verfügt über einen Platz, dem Maus, Tastatur, Display, Mikrofon, Kamera und Audio zugewiesen sind.
  • Sie setzen sich an Ihren Computer und melden sich über eine virtuelle Konsole (VC)/einen grafischen Anmelde-Manager (GLM) an.
  • Sie sperren Ihre Sitzung und gehen dann weg.
  • Jemand anderes setzt sich hin und meldet sich über einen zweiten VC/GLM an.
  • Nun sind zwei Benutzer angemeldet (zwei Sitzungen), aber nur der zweite istaktiv.

Wessen Prozesse haben jetzt Zugriff auf die Hardware? Sie möchten sicher nicht, dass der zweite Benutzer ein Aufnahmeprogramm startet, das weiterhin Zugriff auf Mikrofon/Kamera/Tastatur hat, wenn Sie zu Ihrer Sitzung zurückkehren.

Mir ist zwar nicht klar, ob Consolekit Prozessen den Zugriff auf die Hardware entzieht, aber es ermöglicht einem Prozess zumindest, sich wie ein „guter Bürger“ zu verhalten und die Hardware freizugeben, wenn sich die Sitzung ändert.

Remote-Logins undsu

sshund su - userwerden von Consolekit nicht beeinflusst. Consolekit ist für die Verwaltung von Sitzungen für Sitze vorgesehen. Ein Sitz ist eine Sammlung physischer Geräte (Maus, Tastatur, Bildschirm usw.), die diesem Sitz zugewiesen sind. Eine Sitzung wird erstellt, wenn sich ein Benutzer an diesem Sitz anmeldet. Ein Sitz kann viele Sitzungen haben, und Consolekit verfolgt diese Sitzungen und benachrichtigt Prozesse (die zuhören) über DBUS, wenn sich die Sitzung ändert.

Einschränkungen beim Herunterfahren durch mehrere Benutzer

Consolekit kann auch in Verbindung mit Policykit verwendet werden, um zu verhindern, dass Benutzer das System herunterfahren, wenn mehrere Sitzungen geöffnet sind (mehr als ein Benutzer angemeldet ist).

Warum Consolkit verwenden?

Für ein Einzelbenutzersystem ist Consolekit nutzlos. Wenn Sie mit Ihrer Familie einen Computer gemeinsam nutzen, kann sich jeder anmelden und den Benutzer wechseln, ohne sich abzumelden und ohne den Hardwarezugriff zu beeinträchtigen. Soweit ich mich erinnere, hat jeder Benutzer auch seine eigene XServer-Instanz.

Alternativen

Ich kenne keine Alternativen zu consolekit oder systemd. Wenn Sie diese Funktionalität benötigen, sollten Sie über die Forkung von consolekit nachdenken.

verwandte Informationen