コンソールキットを搭載したシステムと搭載していないシステムの違いは何ですか?

コンソールキットを搭載したシステムと搭載していないシステムの違いは何ですか?

まず、私はスタンドアロンの 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 経由で多くのユーザーをログインさせることもできます。では、consolekit を使用する利点は何でしょうか? 削除するとセキュリティ上の問題が発生する可能性があるかどうか、また変更を確認するにはどうすればよいか教えてください。何も変更されていないように見えます。

答え1

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

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

  • コンピュータには、マウス、キーボード、ディスプレイ、マイク、カメラ、オーディオが 1 つずつ割り当てられています。
  • コンピューターの前に座り、1 つの仮想コンソール (VC)/グラフィカル ログイン マネージャー (GLM) を介してログインします。
  • セッションをロックして、立ち去ります。
  • 他の誰かが座って、2 番目の VC/GLM 経由でログインします。
  • 現在、2人のユーザーがログインしています(2つのセッション)が、2番目のユーザーのみがアクティブ

現在、誰のプロセスがハードウェアにアクセスしていますか? 自分のセッションに戻ったときに、2 番目のユーザーがマイク/カメラ/キーボードへのアクセスを保持する録音プログラムを起動することは絶対に望ましくありません。

consolekit がプロセスからハードウェア アクセスを奪うかどうかは不明ですが、少なくともプロセスが「善良な市民」となり、セッションが変更されたときにハードウェアを解放できるようになります。

リモートログインとsu

sshこれらはsu - userconsolekit の影響を受けません。 consolekit は、シートのセッションを管理することを目的としています。シートとは、そのシートに割り当てられた物理デバイス (マウス、キーボード、ディスプレイなど) の集合です。セッションは、ユーザーがそのシートにログインすると作成されます。シートには複数のセッションがある場合があり、 consolekit はそれらのセッションを追跡し、セッションが変更されると DBUS 経由で (リッスンする) プロセスに通知します。

複数ユーザーのシャットダウン制限

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

consolkit を使用する理由は何ですか?

シングルユーザー システムの場合、consolekit は役に立ちません。家族で 1 台のコンピューターを共有している場合は、ログアウトしたりハードウェア アクセスを妨げたりすることなく、全員がログインしてユーザーを切り替えることができます。私の記憶が正しければ、各ユーザーには独自の xserver インスタンスもあります。

代替案

consolekit または systemd に代わるものは知りません。この機能が必要な場合は、consolekit をフォークすることを検討してください。

関連情報