Fedora Core 5でのSELinuxの機能や使い方を,これまでSELinuxを使ったことがない人に向けて分かりやすく解説する。今回は,ポリシーを追加できるモジュール・パッケージの作成方法を説明する。

 SELinuxのアクセス拒否が原因でアプリケーションが動作しない場合,タイプを付与し直したり,booleanパラメータを調整したりして解決する方法を前回までに紹介した。しかし,これらの方法で解決できるトラブルは限定される。

 あらゆるトラブルに対処するには,ポリシーを追加するスキルが必要になる。前回紹介したように,ポリシーを追加するには「モジュール・パッケージ」を作成し,それをインストールする。その手順を具体的に説明しよう*1

モジュール・パッケージの設定書式

 モジュール・パッケージを作成する場合は,(1)アクセス許可設定と(2)ファイルのタイプ付与設定を記述する必要がある。

 アクセス許可設定は,拡張子が「.te」というテキスト・ファイル(通称teファイル)に記述する。ファイルのタイプ付与設定は,拡張子が「.fc」というテキスト・ファイル(通称fcファイル)に記述する。

 teファイルとfcファイルをバイナリ形式の一つのファイルに変換したものが「モジュール・パッケージ」である。モジュール・パッケージへの変換は,コマンド一つで実行できる。まずは,teファイルとfcファイルの書式をきちんと把握しておこう。

teファイルの書式

 teファイルの書式は,図1のようになる。(3)で示す前回扱ったallow書式によるアクセス許可設定が,設定内容の中心になる。それ以外にも,(1)と(2)のような記述がある。

図1●teファイルの書式
図1●teファイルの書式
[画像のクリックで拡大表示]

モジュール・パッケージ名の指定

 (1)では,モジュール・パッケージ名を指定している。モジュール・パッケージには必ず名前を付ける。不足した設定を追加するためのモジュール・パッケージには,「local」という名前を付けることが一般的だ。ドメインが用意されていないアプリケーションに,新たなドメインを付与するためのポリシーを作る場合は,アプリケーションに関連する名前を付けることが多い。また,teファイルのファイル名は,一般に,「<モジュール・パッケージ名>.te」とする。

 命名の書式は,以下の通りだ。


module <名前><バージョン番号>;

<名前>で命名をしている。<バージョン番号>は,改訂履歴を表すための項目だ。例えば,作成当初は「1.0」とする。修正を加えるたびに,1.1,1.2,1.3...のように番号を上げていく。例では,localという名前を命名し,バージョン番号は1.0にしている。

 (2)は,(3)のアクセス許可書式の中で使っている各種項目の名前をすべて列挙する。項目とは,タイプ,ドメイン,オブジェクト・クラス,パーミッションである。手作業でこれを列挙するのはかなり面倒だが,コマンドを使って自動的に列挙できる。

fcファイルの書式

 fcファイルの書式は,第5回に紹介した,file_contextsファイルの書式に似ている(図2)。違うのは「gen_context」の部分。これは,今後紹介する「リファレンス・ポリシー」の書式だ。最終的にはfile_contextsファイルの書式に変換され,同ファイルに設定が追加される。

図2●fcファイルの書式
図2●fcファイルの書式
[画像のクリックで拡大表示]