Fedora Core 5でのSELinuxの機能や使い方を,これまでSELinuxを使ったことがない人に向けて分かりやすく解説する。今回はポリシーを変更する代わりに,タイプを変更してさまざまなトラブルに対処する方法を紹介する。

 前回から,SELinuxに関するトラブルを,ポリシーを変更しないで解決する方法を紹介している。前回は,booleanパラメータで設定を調整する手法を解説した。今回は,タイプを変更してトラブルに対処する方法を説明する。

タイプが付与される仕組み

 SELinuxのアクセス制御設定は基本的に,次の3つで構成される。

(1)プロセスに「ドメイン」を付与

(2)ファイルなどのリソースに「タイプ」を付与

(3)ドメインからタイプへのアクセスに関するルールを記述

 (1)と(3)は,ポリシー・ファイルに記述されているため,これらを変更するにはポリシー・ファイルに手を加える必要がある。

 一方,(2)のタイプ付与設定は,ポリシー・ファイルとは別に/etc/selinux/targeted/contexts/files/file_contextsファイル(通称,file_contextsファイル)にて行われている。

 file_contextsファイルには,図1(a)の書式に基づいて,ファイルにどのようなタイプを設定するかが記述されている。例えば,/var/www/htmlディレクトリ以下に「httpd_sys_content_t」タイプを付与する設定の場合,file_contextsファイルには,図1(b)のように記述する。

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

 Fedora Core 5のインストール時には,file_contextsファイルの設定通りにタイプが付与される。しかし,このとき付与されたタイプが適切でないときには問題が生じるため,タイプの変更を余儀なくされる。さらに,意図しない(file_contextsファイルの設定と異なる)タイプが付与されてトラブルが発生することもある。これらが原因のトラブルは,ポリシー・ファイルに手を加える必要がないため,比較的簡単に解決できる。

 そこで今回は,トラブルの発生時や意図しないタイプが付与されたときの対処として,タイプを変更する方法を説明する。

タイプの変更でトラブルに対処

 トラブルの中には,適切なタイプを付与するだけで解決するものがある。タイプの変更手順は簡単なので,この種のトラブルにはすぐに対処できる。

 例を示そう(図2)。Fedora Core 5でSELinuxを有効にした場合には,Sambaを用いて/var/samba/shareにあるファイルを共有しようとしても,アクセス拒否により失敗する。これは,Sambaのドメインであるsmbd_tが,/var/samba/shareに付与されているタイプ「var_t」にアクセスできないことが原因だ。

図2●タイプの変更例
図2●タイプの変更例
/var/samba/shareにsamba_share_tタイプを付与するように,タイプの設定を変更する。
[画像のクリックで拡大表示]

 smbd_tから読み書きできるタイプには,「samba_share_t」がある。/var/samba/shareに,samba_share_tタイプを付与するように設定を変更すれば,このトラブルを解決できる。

トラブル解決に使えるタイプを把握

 この方法でトラブルを解決するには,「ドメインがどのタイプにアクセス可能か」を事前に知っておく必要がある。すべてのドメインについて把握するのは不可能に近いが,トラブル解決によく使うタイプだけは知っておこう。

 例えば,Apache HTTP Server(Apache), Samba, vsftpdについては,タイプ付与により各種トラブルが解決できる(表1)。逆にいえば,表1以外のトラブルについては,タイプ変更だけでは解決できない。

表1●Apache,Samba,vsftpdのトラブル解決によく使われるタイプ
表1●Apache,Samba,vsftpdのトラブル解決によく使われるタイプ
[画像のクリックで拡大表示]