このような問題は、使用するOSとその構成方法に依存する場合があります。一部のLinuxディストリビューション(主にCentOSやFedoraなどのRHELベースのもの)には、デフォルトでアクティブ化されたSELinuxが付属しています。これは、次のコマンドで確認し、一時的に変更できます。
root@ls:~# /usr/sbin/getenforce
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce
Permissive
また、現在の構成をより完全に表示することもできます。
root@ls:~# /usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
この変更は、/etc/selinux/config
ファイルを編集してSELINUX
変数をpermissive
またはに設定することで永続的にできますdisabled
。
しかし、この種の問題を解決する正しい方法は、本当にこのような状況にある場合、/var/log/audit/audit.log
ログファイルを確認することです。SELinuxルールに関連するすべてのイベントが含まれます。その後、おそらくスクリプトに正しいコンテキストを与える必要があります。つまり、apache / phpユーザーによる実行が許可されます。SELinuxセキュリティコンテキストの確認は、ls -Z
次の方法で行います。
root@ls:~# ls -alZ /var/www/cgi-bin/
drwxr-xr-x root root system_u:object_r:httpd_sys_script_exec_t .
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t ..
これは、各ファイル/ディレクトリのユーザー、ロール、およびタイプをリストします。ここでは、httpd_sys_script_exec_t
タイプはcgiディレクトリ内のファイルにhttpdによって実行される許可を与えます。シェルスクリプトは、おそらく同じタイプでなければなりません。
コマンドにaudit.log
行をフィードすることもできaudit2allow
ます。SELinuxを幸せにするために必要な変更が出力されます。しかし、通常、提案された変更は、SELinuxポリシー自体で行う必要があります。これは、あなたの場合にすべきことではありません(まだ、この出力は、何が起こっているかについての手がかりを与えることができます)。
次のページでは、同様の問題とそれを解決するさまざまな方法について説明しています。http://sheltren.com/stop-disabling-selinux
x
ファイルに実行許可()を設定しましたか?シェバン行でスクリプトインタープリターを指定しましたか?