CentOS7.x Selinux /home/user-id/www file_contexts 不具合

CentOS7.x の /home/user-id/www のファイルタイプが、インストールから暫くは、
httpd_sys_content_t だったのに、restorecon -vv -RF /home/xxx を何回かやっていたら、
いつの間にか、変わっていた。

いつのまにか、
/home/user-id/www/ 以下は、 httpd_user_content_t
/home/user-id/www/cgi-bin/ 以下は、 httpd_user_script_exec_t になっていました。

なぜこうなるのか、どのタイミングでなるのか、これへの対策は、どうすれば元に戻せるのか、Googleで検索してみましたが、わかりません。
もちろん、/etc/selinux/targeted/contents/files/file_contexts.homedirs には、その様になるように記述されていますが、これは、インストール直後から同じなので、これが不思議です。

/etc/selinux/targeted/contents/files/file_contexts.homedirs には、最初からその記述があるようだ。
一番不思議なのは、#semanage fcontext -l で、file_contexts.homedirs の記述が見えない事です。見えないが、此の定義で、ラベリングされる様です。


CentOS5.x は、Selinux が Targeted の場合では、/home/user-id/www/ は、httpd_sys_content_t になるよと、誰かが書き込んでいたのを見ましたが。
CentOS5.x も /etc/selinux/targeted/contents/files/file_contexts.homedirs には同じ記述があったが、ここの定義通りにはラベリングされなかったと思う。

こうなると、cgi-bin/ 以下で、cgiから書き込みをするディレクトリーは、アクセスできなくなります。

これへの対策は、
1) /home/user-id/www/cgi-bin/ 下のデータ用ディレクトリーだけを、個別に、httpd_user_content_t にリラベルするか、
2) /home/user-id/www/cgi-bin/ 以下を、全て、 httpd_user_content_t にリラベルするか、
3) /home/user-id/www/ 以下を、 httpd_sys_content_t にリラベルするか のどれかです。

2) の/home/user-id/www/cgi-bin/ 以下を、全て、 httpd_user_content_t にリラベルするのは、

結局のところ、/home/user-id/www/ 以下を全て、 httpd_sys_content_t か、httpd_uesr_content_t にするかの違いですが、どちらも、 apache は、httpd_sys_script_t のドメインで実行されるのみたいなので、おんちゃんは、どちらでも良いような気がしますが?

一番の問題は、データ用として使いたいディレクトリーが、httpd_user_script_exec_t か、httpd_sys_script_exec_t のラベルになると、そのディレクトリーへは、通常 cgiから書き込みが禁止されてしまうと言う点です。これは、これで正しいのだが。

cgi-bin/ 以下が全て httpd_xxx_script_exec_t 一辺倒になる記述は、余りに戴けない。 せめて、パーミッションが 777 or 707 だったら、httpd_xxx_cnontent_t にする、方法は無いものか?

1) /home/user-id/www/cgi-bin/ 下のデータ用ディレクトリーだけを、個別に、httpd_user_content_t にリラベルするのが、本来の対応でしょうが、
レンタルサーバーなどでは、個々のユザーが、直接 ファイルタイプを変更出来ないといけないので、これは現実的では無いでしょう。
または、ディレクトリーの命名ルールを決めて、データ用フォルダーは、かならず dxxxx 等にして、正規表現でhttpd_user_content_t で、自動でラベリングするのは、できそうです。
そう言う意味では、 *.cgi のファイルなら、httpd_xxx_script_exec_t にする正規表現が近道かも。

と言うことで、*.cgi のみ httpd_user_script_exec_t にする方法は、 こちらの設定が安心できそうです。

もちろん、オリジナルのポリーシーモジュールを追加して、httpd_sys_script_t が、
httpd_sys_script_exec_t へ書き込むようにするのは、できますが?それは、止めた方がよいと思います。コッホ!!

apache から書き込みをされたくないファイル、ディレクトリーは、 httpd_sys_script_exec_t httpd_user_script_exec_t で守るのが目的だ...。

このブログ記事について

このページは、おんちゃんが2017年8月11日 23:03に書いたブログ記事です。

ひとつ前のブログ記事は「Perl cgi sample for dynamic generate of Java Jnlp.」です。

次のブログ記事は「CentOS7.x NetWorkManager Wait Online 起動時のエラー」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ