[CentOS7][Nginx] SELinuxを設定しホームディレクトリ配下のWebコンテンツを公開を許可

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

Nginxにホームディレクトリ配下に設置したsocketを接続させようとしたところ、SELinuxの都合で503になった。
(今までもホームディレクトリ配下にpublic_htmlを設置して同様のエラーになったのは経験済み。)

今まではSELinuxはOSインストール時に大体オフにしていたが、CentOS7を
使っていてオフにするのもなぁとなったので、オンにしたままどうにか
できないかと思い探したところ、ここを発見。

SELinuxでNginx用のPolicy Moduleを作成すればいいとのこと。

 

Nginxのエラーログ

 

Nginxのerror_logには以下のログが残されている。

2015/05/21 23:39:01 [crit] 23986#23986: *90 connect() to 
unix:/home/centos/app/var/sock/bottle_jinja2.sock failed
(13: Permission denied) while connecting to upstream,
client: *.*.*.*, server: localhost, request: "GET /
HTTP/1.1", upstream:
"uwsgi://unix:/home/centos/app/var/sock/bottle_jinja2.sock:"
, host: "********************"

selinux関連パッケージをインストール

yum install -y policycoreutils-{python,devel}

 

許可する必要のあるポリシー一覧を取得する

許可する必要のあるポリシー一覧を取得したり、実際にポリシーを作成するのには、「audit2allow」コマンドを使用する。

ポリシー一覧を取得し、「nginx.te」ファイルに保存しておく。

# cd ~
# mkdir selinux
# cd selinux
# grep nginx /var/log/audit/audit.log| audit2allow -m nginx > nginx.te
# cat nginx.te

module nginx 1.0;

require {
	type unconfined_t;
	type httpd_t;
	type user_home_t;
	class sock_file write;
	class unix_stream_socket connectto;
}

#============= httpd_t ==============
allow httpd_t unconfined_t:unix_stream_socket connectto;
allow httpd_t user_home_t:sock_file write;

 

ポリシーを作成する

 

一度、SELinuxをオフにする。

# setenforce 0

以下の一行目でポリシー作成に必要なファイル「nginx.pp」を作成し、2行目で作成する。

# cd ~/selinux
# grep nginx /var/log/audit/audit.log| audit2allow -M nginx

******************** IMPORTANT ***********************
To make this policy package active, execute:
# semodule -i nginx.pp

# semodule -i nginx.pp

最後にSELinuxをオンにする。

# setenforce 1

上記作業でアクセスが可能になった。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です