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

7

Zunächst verwende ich das Debian-Testsystem mit eigenständiger Openbox. Ich habe kein systemd, nur sysvinit, und ich werde systemd bestimmt nicht verwenden.

Gestern hat meine Debian-Box angefangen, 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

Ich habe es geschafft, diese Probleme zu beheben.

Im Fall von PulseAudio habe ich gerade 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 rennen 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 eine kleine Änderung war an der ~/.xinitrcDatei erforderlich :

#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, wurde der folgende Fehler angezeigt:

$ 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 der Consolekit auf die eine oder andere Weise tot ist, also würde dies letztendlich sowieso passieren. In der Zwischenzeit lese ich diese Frage, um zu verstehen, was nach dieser Änderung passieren wird, aber ich bekomme nicht viele Dinge.

Es ermöglicht das Wechseln von Benutzern ohne Abmelden [viele Benutzer können gleichzeitig mit einem aktiven Benutzer auf derselben Hardware angemeldet sein].

Ich kann es tun su userund es ändert sich ohne Probleme:

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 liegt 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? Weil es so aussieht, als hätte sich nichts geändert.

Mikhail Morfikov
quelle
Ich weiß das. :)
Mikhail Morfikov

Antworten:

6

Es ermöglicht das Wechseln von Benutzern ohne Abmelden [viele Benutzer können gleichzeitig mit einem aktiven Benutzer auf derselben Hardware angemeldet sein].

Ich glaube, consolekit hat einen Mechanismus für Anwendungen bereitgestellt, mit dem ermittelt werden kann, welcher Benutzer aktiv ist , dh vor dem Computer sitzt. Dies unterscheidet sich vom su userSchalter folgendermaßen:

  • Ihrem Computer ist ein Sitzplatz mit Maus, Tastatur, Display, Mikrofon, Kamera und Audio zugewiesen.
  • Sie setzen sich an Ihren Computer und melden sich über eine virtuelle Konsole (VC) / einen grafischen Anmeldemanager (GLM) an.
  • Sie sperren Ihre Sitzung und gehen dann weg.
  • Jemand anderes setzt sich und meldet sich über einen zweiten VC / GLM an.
  • Jetzt sind zwei Benutzer angemeldet (zwei Sitzungen), aber nur der zweite ist aktiv .

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

Ich bin mir zwar nicht sicher, ob Consolekit den Hardwarezugriff von Prozessen entfernt, aber zumindest ermöglicht es einem Prozess, ein "guter Bürger" zu sein und Hardware freizugeben, wenn sich die Sitzung ändert.

Remote-Anmeldungen und su

sshund su - usersind nicht von consolekit betroffen. Consolekit soll Sitzungen für Sitzplätze verwalten. Ein Sitz ist eine Sammlung von physischen Geräten (Maus, Tastatur, Display usw.), die diesem Sitz zugeordnet sind. Eine Sitzung wird erstellt, wenn sich ein Benutzer an diesem Sitzplatz anmeldet. Ein Sitz kann viele Sitzungen haben, und consolekit verfolgt diese Sitzungen und benachrichtigt Prozesse (die abhören) über DBUS, wenn sich die Sitzung ändert.

Einschränkungen beim Herunterfahren für mehrere Benutzer

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

Warum Consolkit verwenden?

Für ein Einzelbenutzersystem hat consolekit keine Verwendung. Wenn Sie eine Familie haben, die einen einzelnen Computer gemeinsam nutzt, können sich alle Benutzer anmelden und wechseln, ohne sich abzumelden und den Hardwarezugriff zu beeinträchtigen. IIRC, jeder Benutzer hat auch seine eigene xserver-Instanz.

Alternativen

Ich kenne keine Alternativen zu consolekit oder systemd. Wenn Sie diese Funktionalität benötigen, können Sie Consolekit in Betracht ziehen.

Justin C.
quelle
Wenn ich also ohne Consolekit zwei Benutzer angemeldet habe (über startx), haben beide jetzt Zugriff auf diese Geräte? Mit der Consolekit-Funktion hätte nur die aktive, oder? Und dies wurde hauptsächlich erfunden, um grafische Sitzungen zu verwalten. Hat es nichts mit SSH und anderen Dingen wie diesem zu tun? Wenn ja, gibt es eine andere Möglichkeit, dasselbe zu erreichen wie im Fall von consolekit (ohne systemd)?
Mikhail Morfikov
Ja, beide Anmeldesitzungen sollten Zugriff auf diese Geräte haben, es sei denn, Sie verlassen sich auf Hardwaregruppen, um den Zugriff einzuschränken. Nur Prozesse des aktiven Benutzers dürfen die Hardware verwenden. Auch hier weiß ich nicht, ob Consolekit dies durchsetzen kann. Zumindest können Prozesse auf Sitzungsänderungen warten und die Hardware freigeben, bis ihre Sitzung zurückkehrt. Ich glaube, Consolekit soll bei der Verwaltung grafischer Sitzungen helfen. Grundsätzlich Windows-Benutzer wechseln unter Linux. Ich habe jedoch keine Beweise dafür. sshund su - usersind nicht betroffen. Ich kenne keine Alternative zu Consolekit.
Justin C
1
Auf Systemen ohne können systemdSie auch elogindanstelle von consolekit github.com/elogind/elogind (das systemdProjekt wird logindin ein eigenständiges Paket extrahiert) verwenden
Stuart Cardall