В чем разница между системой с consolekit и системой без него?

В чем разница между системой с consolekit и системой без него?

Во-первых, я использую Debian testing system с автономным Openbox. У меня нет systemd, только sysvinit, и я определенно не буду использовать systemd.

Вчера на моем компьютере с Debian начали появляться сообщения, подобные приведенным ниже:

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.

Более того, каждая suкоманда генерирует следующий журнал:

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

Мне удалось устранить эти неполадки.

В случае с PulseAudio я просто закомментировал эти строки из файла /etc/pulse/default.pa:

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

В случае со всем остальным мне пришлось запустить pam-auth-updateи снять галочки 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

И в файл нужно было внести небольшое изменение ~/.xinitrc:

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

потому что когда я пытался проверить список сеансов, я получил следующую ошибку:

$ ck-list-sessions

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

Сейчас ошибок нет, но я понятия не имею, какие изменения могут вызвать эти шаги. Я знаю, что consolekit так или иначе мертв, так что это в конечном итоге произойдет в любом случае. Тем временем я читаюэтот вопросчтобы понять, что произойдет после этого изменения, но я не понимаю многого.

Позволяет переключать пользователей без выхода из системы [несколько пользователей могут одновременно войти в систему на одном и том же оборудовании, при этом один пользователь может быть активен].

Я могу это сделать su user, и это изменится без проблем:

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)

Я также могу заходить во многие пользователи через ssh. Так в чем же преимущество использования consolekit? Не могли бы вы сказать, может ли его удаление вызвать какие-либо проблемы с безопасностью, и как я могу увидеть изменения? Потому что, похоже, ничего не изменилось.

решение1

Позволяет переключать пользователей без выхода из системы [несколько пользователей могут одновременно войти в систему на одном и том же оборудовании, при этом один пользователь может быть активен].

Я считаю, что consolekit предоставляет приложениям механизм определения того, какой пользовательактивный, т.е. сидя перед компьютером. Это отличается от su userswitch следующим образом:

  • На вашем компьютере есть одно место, назначенное для мыши, клавиатуры, дисплея, микрофона, камеры и аудиоустройств.
  • Вы садитесь за свой компьютер и входите в систему через виртуальную консоль (ВК)/графический менеджер входа (ГМВ).
  • Вы блокируете сеанс и уходите.
  • Кто-то другой садится и входит в систему через второй VC/GLM.
  • Теперь вошли два пользователя (два сеанса), но только второйактивный.

Чьи процессы сейчас имеют доступ к оборудованию? Вы, конечно, не хотите, чтобы второй пользователь запустил программу записи, которая сохраняет доступ к микрофону/камере/клавиатуре, когда вы переключаетесь обратно в свой сеанс.

Хотя мне неясно, лишает ли consolekit процессы доступа к оборудованию, по крайней мере он позволяет процессу быть «хорошим гражданином» и освобождать оборудование при смене сеанса.

Удаленные входы иsu

sshи su - userне затрагиваются consolekit. Consolekit предназначен для управления сеансами для мест. Место — это набор физических устройств (мышь, клавиатура, дисплей и т. д.), назначенных данному месту. Сеанс создается, когда пользователь входит в систему на данном месте. У места может быть много сеансов, и consolekit отслеживает эти сеансы и уведомляет процессы (которые слушают) через DBUS об изменении сеанса.

Ограничения на многопользовательское выключение

Consolekit также можно использовать совместно с policykit, чтобы запретить пользователям завершать работу системы, когда открыто несколько сеансов (в системе находится более одного пользователя).

Зачем использовать consolkit?

Для однопользовательской системы consolekit бесполезен. Если у вас есть семья, которая пользуется одним компьютером, то он позволяет всем входить в систему и переключать пользователей без выхода из системы и без вмешательства в аппаратный доступ. IIRC, у каждого пользователя также есть свой экземпляр xserver.

Альтернативы

Я не знаю альтернатив consolekit или systemd. Если вам нужна эта функциональность, вы можете рассмотреть форк consolekit.

Связанный контент