51.2. ローカルポリシーモジュールの構築
以下のセクションでは、実際の例を使用してローカルポリシーモジュールをビルドし、現在のポリシーに関する問題に対応します。この問題には、setsebool コマンドを実行し、次にターミナルを使用しようとする ypbind init スクリプトが含まれます。これにより、以下の拒否が生成されます。
type=AVC msg=audit(1164222416.269:22): avc: denied { use } for pid=1940 comm="setsebool" name="0" dev=devpts ino=2 \ scontext=system_u:system_r:semanage_t:s0 tcontext=system_u:system_r:init_t:s0 tclass=fd
すべてが正常に動作する場合でも(つまり、意図したように実行されるアプリケーションフォームを妨げていない)、ユーザーの通常のワークフローを中断します。ローカルポリシーモジュールの作成は、この問題に対応します。
51.2.1. audit2allow を使用したローカルポリシーモジュールの構築
aud2allow ユーティリティーに、ポリシーモジュールを構築する機能が追加されました。以下のコマンドを使用して、
audit.log
ファイルの特定のコンテンツに基づいてポリシーモジュールを構築します。
ausearch -m AVC --comm setsebool | audit2allow -M mysemanage
audit2allow ユーティリティーは、タイプ強制ファイル(
mysemanage.te
)を構築している。次に、checkmodule コマンドを実行してモジュールファイル(mysemanage.mod
)をコンパイルします。最後に、semodule_package コマンドを使用してポリシーパッケージ(mysemanage.pp
)を作成します。semodule_package コマンドは、異なるポリシーファイル(通常はモジュールとファイルコンテキストファイル)をポリシーパッケージに統合します。