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 su
generiert 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.pa
Datei 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-update
und 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 ~/.xinitrc
Datei 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 user
und 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.
quelle
Antworten:
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 user
Schalter folgendermaßen: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
ssh
undsu - user
sind 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.
quelle
ssh
undsu - user
sind nicht betroffen. Ich kenne keine Alternative zu Consolekit.systemd
Sie auchelogind
anstelle vonconsolekit
github.com/elogind/elogind (dassystemd
Projekt wirdlogind
in ein eigenständiges Paket extrahiert) verwenden