私は新しいWebサーバーに移行する過程にあり、Apacheと私のWebアプリケーション用のクリーンで安全なファイルアーキテクチャが欲しいのですが。
サーバーは1つのphp/mysqlアプリケーションを提供します。このアプリケーションは、FTPおよびWebサービスからファイルを受信し、ログファイルを生成します。
サーバーOSはCentOS 5.4です。
デフォルトのApacheドキュメントルートは/var/www/html
です。
Webアプリケーションディレクトリを以下に配置する必要があります:
/var/www/html/myWebApp
?/www/myWebApp
?/home/www/myWebApp
?アプリケーションディレクトリは、root
ユーザーまたはApache
ユーザーまたは他のユーザーが所有する必要がありますか?
ご協力いただきありがとうございます。
SELinuxが有効になっていると仮定すると、SELinuxがhttpdプロセスによる非標準フォルダーへのアクセスを拒否するため、これらのオプションのすべてが機能するわけではありません。
IIRCは、CentOSにWebアプリケーションを手動で追加するための推奨される方法(例:mediawikiインストール)を/var/www/<myappname>
にインストールし、/ etc/httpd/conf/httpd.confファイルにアプリケーションを指すエイリアスを作成することです(通常、私は/var/www/icons
フォルダーの既存のエイリアスに似たパターンになっています)。
CentOSの/var/www
の下にあるものの一般的なファイル所有権はroot
です。
それは本当にあなた次第です、私は個人的にCentOSのデフォルト DocumentRoot を_/var/www/html/myWebApp
_で選択するでしょう。
アプリケーションファイルは自分で所有できますが、Apacheが実行するように構成されているユーザーおよびグループは、それらを読み取り可能にする必要があります(ただし、アプリケーションがファイルを上書き/編集する必要がない限り、所有することはできません)。これは通常_nobody:nobody
_であり、そのユーザーは特権を持たない必要があります(つまり、ドキュメントルートのファイルのみを読み取ることができ、それ以上はできません)。
詳細はこちら 。
edit:SVNチェックアウトの場合、SVNユーザーが所有するファイルを残すことができます(SVN
またはroot
-Apacheが実行しているユーザーとは異なり、権限は644 (-rw-r--r--)
である必要があります-コミット後のフックでディレクトリをchmodしない場合、これはSVNがデフォルトで使用するものと考えています。
...そして、SELinuxの問題があるかどうかを判断するには、 無効にする を試して再テストします。それが機能する場合、 ログを収集する および HTTPDポリシーを変更する (おそらく_httpd_disable_trans
_を有効にするだけです)。または Ophidian's method :)を使用します
(これはOphidianのコメントであるはずですが、コメントを入力できるスペースに収まらないので、返信として投稿しています)
適切なコンテキスト/タイプで使用するディレクトリ/ファイルをchconすることにより、selinuxでそれを行うことができます。
正しいコンテキストを見つけるための最も簡単な方法は、すでに正しくラベル付けされたdirを調べることです。例えば。
[root @ somehost〜]#ls -ldZ/var/www/html drwxr-xr-x root root system_u:object_r:httpd_sys_content_t/var/www/html
次に、新しいコンテンツディレクトリに正しいSE Linuxタイプを設定します。例えば。/home/myappをドキュメントルートとして使用する場合:chcon -t httpd_sys_content_t/home/myapp
chconは、次のファイルシステムのラベルが変更されるまで保持されます。新しいコンテキストがファイルシステムのラベルを変更しても維持されるように、fcontextを使用することを忘れないでください!
semanage fcontext-at httpd_sys_content_t/home/myapp