Fedora Core 5でのSELinuxの機能や使い方を,これまでSELinuxを使ったことがない人に向けて分かりやすく解説する。今回は,リファレンス・ポリシーを操作するための「ポリシーのソース・ファイル」を解説する。

 本題に入る前に,2006年10月24日にリリースされたFedora Core 6に含まれるSELinuxの状況をごく簡単に報告する。Fedora Core 6と同5のSELinuxは,ほとんど同じである。機能的な違いは,本誌2006年11月号で紹介したSELinux関連のトラブル解決支援ソフトウエア「SELinux Trouble Shooting Tool」の実装程度であり,SELinux本体の機能は変わらない。本連載はFedora Core 5での使い方を紹介しており,その内容はFedora Core 6にも通用する。

 本題に入ろう。これまでポリシー・ファイルについては,バイナリ形式のものを扱ってきた。その基になっているのは,ポリシーのソース・ファイル(以下,ソース・ファイル)と呼ばれるテキスト形式のファイルだ。バイナリ形式のポリシー・ファイルでは,どのような設定がなされているのかを把握したり,大幅な修正を加えることはほとんど不可能である。

 そこで,ポリシーを本格的に操作するときは,バイナリ・ファイルではなく,そのソース・ファイルが対象になる。同時に,ソース・ファイルの構造を理解しておくことも重要である。今回は,ソース・ファイルの入門として,その構造を見ていこう。

ソース・ファイルをインストールする

 ポリシーのソース・ファイルを扱うには,システムに「rpm-build」および「gcc」のパッケージが必要だ。これらのパッケージをインストールしよう。


# yum install rpm-build gcc

 ポリシーのソース・ファイルは,RPMパッケージのベースとなるSRPMファイルに収録されている。今回の場合,「selinux-policy」という名前のSRPMファイルを入手する。

 最新版のSRPMファイルを,「http://fedora.redhat.com/Download/mirrors.html」でアクセスできるサイトの,updates/5/SRPMSディレクトリからダウンロードしよう。2006年11月上旬時点のファイル名は,「selinux-policy-2.3.7-2.fc5.src.rpm」だ。このSRPMファイルを次のようにインストールする。


# rpm -ivh selinux-policy-*.src.rpm

/usr/src/redhatディレクトリ以下に,ソース・ファイルを含んだ一連のファイル群がインストールされる。ここからソース・ファイルを取り出す手順を図1に示す。

図1●ソース・ファイルを取り出す手順
図1●ソース・ファイルを取り出す手順
[画像のクリックで拡大表示]

ソース・ファイルの構成

 /etc/selinux/targeted/src/policy以下には,さまざまなファイルやディレクトリが格納されている(表1)。ここでは,図2に沿って,全体を概観しよう。

表1●policyディレクトリにある主なファイルとディレクトリ
表1●policyディレクトリにある主なファイルとディレクトリ
[画像のクリックで拡大表示]

図2●ソース・ファイルの構成
図2●ソース・ファイルの構成
[画像のクリックで拡大表示]

 図2の(1)に示したポリシーのソース・ファイルの本体は,policy/modules以下に格納されている。このディレクトリには,「ソース・モジュール」という単位でファイル群が整理されて格納されている。

 この中には,strictポリシーや,targetedポリシー,ディストリビューション固有のポリシーといった,さまざまな用途のポリシーがまとめて記述されている。

 (2)makeコマンドを用いて,ソース・ファイルをバイナリ形式に変換する。変換する際のオプションをbuild.confやmodules.confなどに設定できる。この設定に基づいて,用途に応じたポリシーが抽出される。例えば,「targetedポリシーに変換」「Fedora Coreに対応したポリシーに変換」のようなことができる。

 (3)バイナリ形式のポリシーは,base.ppファイルである。設定によっては,一部を別のモジュール・パッケージ(ppファイル)として分離することも可能だ。