注目の書籍

好評発売中!

まつもとゆきひろコードの未来

Rubyの開発者・まつも とゆきひろ氏がクラウ ド時代の技術を鋭く分 析、やさしく解説!

オープンソース/Linux

第一人者がやさしく教える新SELinux入門

日経Linux

第10回 ポリシーのソース・ファイルを操作する

2008/01/07
日立ソフトウェアエンジニアリング 中村 雄一
出典:日経Linux 2007年1月号  171ページより
(記事は執筆時の情報に基づいており、現在では異なる場合があります)

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ファイル)として分離することも可能だ。

>>ソース・モジュールの実体
次ページ以降はITpro会員(無料)の方のみお読みいただけます。
会員の方は、 ログインしてご覧ください。
まだ会員でない方は、ぜひ登録(無料)していただき、ITproの豊富なコンテンツをご覧ください。

この記事に対するfacebookコメント

nikkeibpITpro

読みましたか? 〜 未読記事をご紹介