web-dev-qa-db-ja.com

NFS共有からの画像の提供に403をスローするApache

マシンAで実行されているApacheからイメージを提供しようとすると、403 PermissionDeniedエラーが繰り返し発生します。イメージはマシンBのNFS共有であるディレクトリにあります。マシンB/etc/exportsのエントリは次のようになります:/ dir/xxx.xxx.xxx.xxx(rw、sync、no_root_squash)

マシンAでNFSにマウントされたファイル/ディレクトリを正常に参照できます。

Httpd.confを通過した後、そこに書かれているように、オプションEnableMMAPoffとEnableSendFileOffのコメントも外しました。

両方のマシンはRHEL5上にあります。

4
s1d

最終的にこれを解決しました。それはずっとSELinuxの問題でした。ここで解決策を見つけました- http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/selinux-guide/rhlcommon-section-0068.html

Red Hat Enterprise Linux 4では、ほとんどのターゲットデーモンはユーザーデータと対話せず、NFSにマウントされたホームディレクトリの影響を受けません。 1つの例外はApacheHTTPです。たとえば、マウントされたファイルシステム上にあるCGIスクリプトのnfs_tタイプは、httpd_tの実行が許可されているタイプではありません。

関連するサーバーでSELinuxをpermissiveに設定することで、私はその仕事をしました。

7
s1d

NFSは、UID/GIDが適切に配置されていない場合、常にこのような楽しいことを引き起こします。

Webサーバーがユーザー「Apache」として実行されていると仮定して、ファイルのアクセス許可が誰でも読み取り可能なものであることを確認してください。

apacheユーザーにsuし、ディレクトリにcdして、ファイルをcat 'してみてください。

おそらく許可の問題です。 Apacheがディレクトリに書き込んでいない場合、読み取っているファイルがNFS上にあるか他のものにあるかは関係ありません。

1
Matt Simmons

Mattの提案に加えて、ApacheがNFSマウントポイントが存在する場所からファイルを提供することを許可されていることも確認してください。セキュリティ上の理由から、多くのApacheディストリビューションには、次のような制限的なディレクティブが付属しています。

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

これにより、/以降からファイルが提供されるのを防ぎます。通常は、DocumentRootsを含む別のディレクトリがファイルをもう少し自由に提供できるようにするための制限の少ないルールがあります。

RHEL5がApache構成ファイルを配布する方法に慣れていません。ただし、マウントポイントからファイルを提供できるようにするには、追加のDirectoryディレクティブを作成する必要がある場合があります。

0
Dan Carley