it-swarm-ja.com

Apacheがこのディレクトリエイリアスで「ファイルが存在しません」と言うのはなぜですか?

小さなWebサーバーをセットアップしています。 Apacheがエイリアスを見つけられないという問題があります。私のDocumentRootは/ var/www/htdocsですが、ウェブサイトで表示できるようにしたい/ home/user/Documents/a_directory/CurrentCapturesの下の別の(より大きな)パーティションにいくつかのファイルがあります。

私の/var/www/conf/httpd.confには、次の2つのエイリアスがあります。

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons/">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

# Added by me
Alias /CurrentCaptures "/home/user/Documents/a_directory/CurrentCaptures"

<Directory "/home/user/Documents/a_directory/CurrentCaptures">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

そこに/icons/エイリアスを残してテストしましたが、ブラウザでhttp://localhost/icons/に移動すると、機能します。しかし、http://localhost/CurrentCaptures/に行こうとすると、404 NotFoundエラーが発生します。

/ var/www/logs/error_logで、次のエラーが発生します。

[2014年8月4日月曜日11:02:30] [エラー] [クライアント192.168.10.100]ファイルが存在しません:/ home/user/Documents/a_directory/CurrentCaptures /

何か案は?

1
ac0xr

Apacheプロセスには/ home/userにアクセスする権限がない可能性があります。

Apacheは通常、非特権ユーザーとして実行されます(通常、「http」、「httpd」、または「www-data」という名前ですが、バリエーションがあります)。そのユーザーには、別のユーザーのホームディレクトリに移動する権限がありません。

セキュリティを気にしない場合これを回避する最も簡単な方法は、ディレクトリにワールド実行権限(モード0711など)を追加し、ファイルにワールド読み取り権限(0644)を追加することです。 Webサーバーで利用できるようにしたい。ディレクトリでは、「実行」は下に移動することを意味し、「読み取り」はディレクトリ内のファイルを一覧表示することを意味します。したがって、実行権限を付与することで、Webサーバーが既知のファイルを読み取ることを許可します(ファイルの権限に従います)が、その内容を列挙することはできません。ディレクトリ。

より「正しい」解決策ファイルをユーザー固有ではないディレクトリ階層に移動することです。これは、たとえば、ファイルを別の場所(特定のユーザーのホームディレクトリの外)に移動するか、バインドマウントを使用して行うことができます。ファイルのアクセス許可は引き続き有効であるため、ファイルはWebサーバーで読み取り可能である必要がありますが、Webサーバーにホームディレクトリへのアクセスを許可する必要はありません。

1
a CVn