web-dev-qa-db-ja.com

Apache:検索権限がないためアクセスが拒否されました

この質問はよく聞かれますが、私が見た解決策はうまくいきませんでした。

仮想ホストが1つしか有効になっておらず、ドキュメントルートの下にないフォルダーへのアクセスを有効にしようとしています

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

Alias /movies /home/username/Videos/Movies

<Directory /home/username/Videos/Movies/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

次のように/etc/Apache2/envvarsを設定します

export Apache_RUN_USER=www-data
export Apache_RUN_GROUP=public

/ home/username/Videos /とそのサブフォルダーがusername:publicによって所有されていることを確認し、パーミッションを777に設定し(775が機能しなかった後)、ユーザーwww-dataがグループに属していることを確認しましたpublic

さて、http://localhost/moviesを参照すると

[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path

しかし、/etc/Apache2/envvarsusername(自分のユーザー名)の下でApacheを実行するように設定すると、すべて正常に動作します。問題は許可に関連していますが、私の場合はどうなのかわかりません。特に、許可を777に設定した場合。何か案は?

追伸Ubuntuバージョンは14.04、Apacheは2.4.7で、他の構成ファイルは編集していません。

74
Yotam

ユーザーディレクトリでchmod +xを実行し、Apacheを再起動します。 755パーミッションが機能するはずです。 644で問題が発生しました。

92
Peter

Selinuxが問題である場合、単に無効にするのではなく、 このページ および このページ でアクセスを許可するコマンドを指定します。

chcon -R -t httpd_sys_content_t ~/public_html/
24
jozxyqk

Selinuxが有効になっている場合があります。試してみる

getenforce

「強制」と表示されている場合は、試してください

setenforce 0

これで問題が解決するか試してください。

17
Soprano

私は同じ問題に遭遇しましたが、何時間も試した後、解決策が問題を正確に解決することがわかりました:

https://wiki.Apache.org/httpd/13PermissionDenied

基本的に、Apacheサーバーは、提供するすべてのファイルの読み取り権限だけでなく、仮想ホストのパスにあるすべてのディレクトリの実行権限も必要とします。

ユーティリティnameiは、パスの各コンポーネントに沿って権限をリストすることにより、権限の問題を見つけるのに役立ちます。

namei --modes /usr/local/Apache2/htdocs/foo/bar.html

私の場合、私のパス内のディレクトリにはパーミッション700があり、問題が発生します。 701に変更した後、問題は解決しました。

15
Lu Sun

4.10ではなく4.4カーネルを使用しているUbuntu 16.04ホストのdockerコンテナでApacheを実行しようとしたときに、この問題が発生していました。

ホストでこのコマンドを実行して再デプロイすると、大丈夫でした。

Sudo apt-get install --install-recommends linux-generic-hwe-16.04 
1
Programster