Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第4章 PolicyKit

PolicyKit ユーティリティーは、サービスを権限のないプロジェクト (サブジェクト とも呼ぶ) に提供する際に権限のあるプログラム (メカニズム とも呼ぶ) が使用する承認 API を提供するフレームワークです。以下は、PolicyKit またはそのシステム名である polkit になされた変更の詳細です。

4.1. ポリシー設定

新機能に関連して、認証ルールは JavaScript .rules ファイルで定義されるようになりました。これは、同じファイルがルールと管理者ステータスの両方を定義するために使用されることを意味します。これまでは、この情報は *.pkla および *.conf の 2 つの異なるファイルに保存され、これらのファイルは追加のローカル認証を定義するためにキー/値のペアを使用していました。
これらの新たな .rules ファイルは以下の 2 つの場所に保存されます。ローカルのカスタマイズ用の polkit ルールは /etc/polkit-1/rules.d/ ディレクトリーに保存され、サードパーティーのパッケージは /usr/share/polkit-1/rules.d/ に保存されます。
既存の .conf および .pkla 設定ファイルは保持され、.rules ファイルもサイドとして存在します。Red Hat Enterprise Linux 7 の polkit が、互換性の問題とともにアップグレードされました。
ルールの優先におけるロジックが変更されました。polkitd は、.rules ファイルを辞書式順序で、/etc/polkit-1/rules.d および /usr/share/polkit-1/rules.d ディレクトリーから読み取りするようになりました。2 つのファイルに同一の名前が付けられる場合、/etc のファイルが /usr のファイルの前に処理されます。また、既存ルールは、/etc/polkit-1/rules.d/49-polkit-pkla-compat.rules ファイルによって適用されます。このため、.rules ファイルが /usr または /etc にあり、かつそのファイル名が辞書式順序で 49-polkit-pkla-compat の先にくる場合は、既存ルールよりも優先されます。古いルールが上書きされないようにする最も簡単な方法は、その他すべての .rules ファイルの名前を 49 よりも大きな数字で始めることです。
以下は、.rules ファイルの例です。これは、システムデバイスに storage グループ用のファイルシステムをマウントすることを許可するルールを作成します。このルールは /etc/polkit-1/rules.d/10-enable-mount.rules ファイルに保存されます。

例4.1 システムデバイスへのファイルシステムのマウントの許可

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" &&
        subject.isInGroup("storage")) {
        return polkit.Result.YES;
    }
});

詳細は、以下を参照してください。

  • polkit(8) – JavaScript ルールおよび優先順位ルールの説明が記載されている man ページです。
  • pkla-admin-identities(8) および pkla-check-authorization(8) – .conf および .pkla ファイル形式について個別に記載している man ページです。