コンソールキットがあるシステムとコンソールキットがないシステムの違いは何ですか?

コンソールキットがあるシステムとコンソールキットがないシステムの違いは何ですか?

まず、スタンドアロンのOpenboxと一緒にDebianテストシステムを使用しました。私は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

今はエラーはありませんが、これらのステップによってどのような変化が起こるのかわかりません。私はコンソールキットが死んだことを知っているので、最終的にはこれが起こります。その中で本を読んでいます。この問題この変更後に何が起こるのかを理解するには、多くのことは得られません。

ログアウトせずにユーザーを切り替えることができます。 [1人のユーザーがアクティブになっている間、同時に多くのユーザーが同じハードウェアにログインできます。]

私はそれを行うこと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を介して多くのユーザーにログインすることもできます。それでは、コンソールキットを使用するとどのような利点がありますか?削除するとセキュリティ上の問題が発生したかどうかを教えていただけますか?変更をどのように確認できますか?なぜなら何も変わらないように見えるからです。

答え1

ログアウトせずにユーザーを切り替えることができます。 [1人のユーザーがアクティブになっている間、同時に多くのユーザーが同じハードウェアにログインできます。]

私はコンソールキットがアプリケーションがどのユーザーであるかを判断するメカニズムを提供すると信じています。ポジティブつまり、コンピュータの前に座っています。これとsu userスイッチの違いは次のとおりです。

  • コンピュータには、マウス、キーボード、モニター、マイク、カメラ、オーディオ用に割り当てられた場所があります。
  • コンピュータの前に座って仮想コンソール(VC)/グラフィックログインマネージャ(GLM)を介してログインします。
  • セッションをロックして席を離れます。
  • 他の人は座って、2番目のVC / GLMを介してログインします。
  • これで、2人のユーザーがログインしましたが(セッション2つ)、2人目のユーザーのみがログインしました。ポジティブ

今、誰のプロセスがハードウェアにアクセスできますか?セッションに戻っても、マイク/カメラ/キーボードへのアクセスを維持する録音プログラムを2人目のユーザーが起動したくありません。

consolekitがプロセスからハードウェアアクセスを削除するかどうかはわかりませんが、少なくともプロセスが「良い市民」になり、セッションの変更時にハードウェアを解放できます。

リモートログインとsu

sshそしてsu - userコンソールキットの影響を受けません。 Consolekitは座席セッションを管理するように設計されています。座席は、その座席に割り当てられた物理デバイス(マウス、キーボード、モニターなど)のセットです。ユーザーがその座席にログインすると、セッションが作成されます。座席には多くのセッションがあり、コンソールキットはこれらのセッションを追跡し、セッションが変更されるとDBUSを介してプロセスに通知します。

複数のユーザーの制限をオフにする

Consolekitは、複数のセッションが開いている場合(複数のユーザーがログインしている場合)、ユーザーがシステムをシャットダウンするのを防ぐためにPolicykitと共に使用することもできます。

なぜコンソールキットを使用するのですか?

シングルユーザーシステムでは、consolekit は役に立ちません。家族がコンピュータを共有している場合は、誰もがログアウトしたり、ハードウェアアクセスを妨げたりせずにログインしてユーザーを切り替えることができます。 IIRC、各ユーザーは独自のxserverインスタンスも持っています。

代替

私が知っている限り、consolekitやsystemd以外には選択肢はありません。この機能が必要な場合は、コンソールキットフォークを検討してください。

関連情報