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


75

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

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がgroupに属していることを確認しました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/envvarsApacheを実行するように設定するとusername、すべて正常に動作します。問題は許可に関連していますが、私の場合はどうなのかわかりません。特に、アクセス許可をに設定した場合777。何か案は?

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



私が書いたように私は、彼らがあそこに提案すべてをした、そしてそれは助けにはならない
Yotam

/homeACLを有効にしてマウントした可能性はありますか?(許可ビットの最後に「+」記号があります(確認してくださいls -l))
Polosson 14

いいえ、私はそれをしませんでした。現在、ユーザーの下でApacheを実行しているので動作していますが、セキュリティ上の理由から別のユーザーの下で実行したいと思います。
ヨタム14

Linuxを初めて使用します。Ubuntu 14.04 LTEバージョンをダウンロードしました。私は同じ問題に直面しています。誰でも助けてくれますか?
イムダッド14年

回答:


95

行いchmod +x、ユーザーディレクトリに、そしてApacheを再起動してください。755のアクセス許可が機能するはずです。644で問題が発生しました。


6
確かに、ファイルやディレクトリのパーミッションを確認し、可能な場合は、あなたが使用することができます倍増するnamei -m /home/youruser/public_html/yourfile.extか試してくださいpeople.apache.org/~igalic/hacks/parsepath
ジュニアM

2
明確にするために、Apacheに読み取らせたいディレクトリは、Apacheユーザーにとって読み取り可能でなければなりません。ほとんどの場合、ユーザーのホームフォルダーはユーザーとグループによって所有されていないため/home/username、すぐにアクセスするには755のアクセス許可を設定する必要があります。
ルター

OSX Mac OS High Sierraでこの問題が発生しましたが、このソリューションはうまくいきました。Apacheを再起動する必要さえありませんでした。
消え

何時間も検索した後、DocumentRootの親ディレクトリのアクセス許可も正しいはずです。どうもありがとうございました 。ところで、これはApacheを再起動する必要はありません
Accountantم18年

27

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

chcon -R -t httpd_sys_content_t ~/public_html/

1
私の問題だと確信しました。くそCentOS!コマンドのThxは完全に機能します。
バルミプール

2
おかげで、~/public_html/私が提供しようとしていたコンテンツのルートディレクトリでパーツを置き換える必要がありました。
trpt4him

chcon -R -t httpd_sys_content_t /var/www/html/phpmyadmin/(私の状況では)
-cssyphus

発見されたselinuxは単純なhomedirを処理できず、それらの機能の1つだけが必要で、もう1つはオプションでした。修正に関するリマインダーをお寄せいただきありがとうございます。新しいリリースごとの必須の再テスト期間と失望の後、私は通常キックスタートでそれをハックします。systemdの場合。
user2066657

17

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

getenforce

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

setenforce 0

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


4
修正としてSELinuxを無効にしないでください。ポートを再割り当てするかブール値を設定して、SELinuxの問題を修正します。
-siride

1
この回答は、問題がSELinuxに関連していることを識別するのに役立ちます。ただし、無効にすることはお勧めしません。
ラジクマールR

15

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

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

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

ユーティリティnameiを使用すると、パスの各コンポーネントに沿って権限をリストすることで、権限の問題を見つけることができます。

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

私の場合、私のパス内のディレクトリにはアクセス許可700があり、問題が発生します。701に変更した後、問題は解決しました。


1
ここのリンクは問題を説明するので役立ちます:ディレクトリパスのノードの1つに検索許可がありません。755にこれを見つけるために、「namei」コマンドを使用して、「chmodコマンド」
user3751385

実際の理由と解決策を説明します。感謝
Emdadul Sawon

1

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

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

sudo apt-get install --install-recommends linux-generic-hwe-16.04 

私はこの問題にぶつかりましたが、コンテナ内chmodまたはchownコンテナ内で奇妙な効果があり、しばらくの間Apache 403エラーを抑制し、しばらくしてから元に戻します。私が知る限り、コンテナの再起動やその他の実質的な変更は、この原因にはなりません。私は実際に16.04を実行しているので、このバイナリをインストールしようとしましたが、今のところ403が停滞しています。私はそれに目を光らせて、感謝します!
18
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.