web-dev-qa-db-ja.com

ConsoleKitおよびPolicyKitとは何ですか?それらはどのように機能しますか?

最近のGNU/LinuxがConsoleKitとPolicyKitを使用しているのを見てきました。それらは何のため?それらはどのように機能しますか?

最良の答えは、各自が解決しようとしている問題の種類と、それらをどのように解決するかを説明する必要があります。

私はそのようなものが存在しなかった頃から、長い間GNU/Linuxユーザーでした。私はSlackwareを使用しており、最近はGentooを使用しています。私は上級ユーザー/管理者/開発者なので、答えはできる限り詳細かつ正確にすることができます(すべきです!)。これらがどのように機能するかを理解したいので、それらを(ユーザーまたは開発者として)可能な限り最良の方法で使用できます。

43

つまり、consolekitは、ユーザーセッション(つまり、ユーザーがログインしている場所)を追跡するサービスです。ログアウトせずにユーザーを切り替えることができます(1人のユーザーがアクティブな状態で、多くのユーザーが同じハードウェアに同時にログインできます)。また、セッションが「ローカル」であるかどうか、つまりユーザーがハードウェアに直接アクセスできるかどうかを確認するためにも使用されます(リモートアクセスよりも安全と見なされる場合があります)。 ConsoleKitドキュメント

PolicyKit デスクトップ環境で微調整された機能を許可します。従来は、特権ユーザー(root)のみがネットワークを構成することができました。ただし、サーバー環境では、ラップトップなどのホットスポットに接続できないようにするには制限が多すぎることが合理的な前提です。ただし、この人に完全な特権を与えたくない場合(プログラムのインストールなど)や、一部の人のオプションを制限したい場合があります(たとえば、子供のラップトップでは、ペアレンタルフィルターを持つ「信頼できる」ネットワークのみを使用できます)。私が覚えている限り、それは次のように機能します:

  • プログラムはアクションについてdbus経由でデーモンにメッセージを送信します
  • デーモンは、PolicyKitライブラリ/構成(実際にはPolicyKitデーモン)を使用して、ユーザーがアクションを実行できるかどうかを判断します。特定の条件を満たす必要がある場合があります(パスワードの入力やハードウェアアクセスなど)。
  • デーモンはそれに従ってアクションを実行します(認証エラーを返すかアクションを実行します)

PolicyKitドキュメント

[〜#〜] edit [〜#〜]現在、ConsoleKitは主に logind に置き換えられています-これは-の一部です systemd 、ただしスタンドアロンバージョン elogind があります。

25