デフォルトでは、CGIは、httpd_tドメイン(Apache Webサーバのドメイン)で動
作します。これは、サブプログラムのドメインは、親プログラムのドメインと同
じになるというSELinuxの仕様によるものです。
CGIのドメインを変えたい場合は、「domain_trans」というものを使って設定を記述する必要があります。
具体例を解説します。
CGIスクリプトが、/var/www/cgi-binにあると仮定し、cgi_tドメインで走らせ
たいとします。
cgi_t.spを以下のように作ります。
{ domain cgi_t; domain_trans httpd_t /var/www/cgi-bin/**; include common-relaxed.sp; ##### allowxxx will be here... }
program文は、unconfinedドメインから起動したプログラムにドメインを割り当 てるものでした。domain_trans文は任意のドメインから起動されたプログラム にドメインを割り当てるものです。
domain cgi_t; domain_trans httpd_t /var/www/cgi-bin/**;は、httpd_tドメインで動いているプログラムが、/var/www/cgi-bin以下のプロ グラムを実行した場合、cgi_tドメインを割り当てる、という意味になります。
{ domain foo_t; deny /etc/shadow; allow /etc/** r,s; }foo_tが、/etc以下の全ファイルに読み込みできるように設定されていますが、 /etc/shadowにアクセスすることができません。 /etc/shadowにアクセスするには、 allow /etc/shadowと明示的に記述す る必要があります。なお、デフォルトではinclude/common-relaxed.spにいくつ かのファイルがdenyが登録されています。