passengerをselinuxありで動作させるには
selinuxをEnforcingにしたFedora 10で、passenger(mod_rails for Apache)を動かす方法を記述します。
動作確認した環境は次のとおりです。
全体の手順は以下のとおりです。
1. selinux関連の必要なパッケージをインストール
$ yum install selinux-policy selinux-policy-targeted
2. passenger用のselinuxのポリシーをインストール
1)passengerが利用するselinuxのポリシーを作成
$ mkdir /etc/selinux/passenger $ cd /etc/selinux/passenger $ vi passenger.te policy_module(passenger, 2.1.2) require { type httpd_tmp_t; type httpd_t; type lib_t; type admin_home_t; type default_t; class dir { read search getattr }; class file execute_no_trans; class capability { fowner fsetid }; class fifo_file { write create unlink getattr setattr }; class sock_file { write getattr setattr read create unlink }; } #============= httpd_t ============== allow httpd_t admin_home_t:dir { read search getattr }; allow httpd_t default_t:dir { read search getattr }; allow httpd_t httpd_tmp_t:fifo_file { write create unlink getattr setattr }; allow httpd_t httpd_tmp_t:sock_file { write getattr setattr read create unlink }; allow httpd_t lib_t:file execute_no_trans; allow httpd_t self:capability { fowner fsetid };
2)ポリシーをコンパイル
$ make -f /usr/share/selinux/devel/Makefile
3)ポリシーをインストール
$ semodule -i passenger.pp
4)個々のrailsアプリケーションに対してSelinuxのセキュリティコンテキストを設定
$ cd <railsアプリケーションのディレクトリ> $ chcon -R -t httpd_sys_content_rw_t log
3.passengerのインストールは、多数のサイトで述べられていますので、省略します。
4. httpdの設定
$ setsebool -P httpd_can_network_connect 1