web-dev-qa-db-ja.com

Apacheのエイリアスディレクトリでの403 Forbiddenの修正

DocumentRootにないファイルシステム上のディレクトリを指すエイリアスを設定しようとしています。今、403 Forbidden応答を受け取ります。実行する手順は次のとおりです。1. http.confを編集して、次を追加します。

Alias /example "/Users/user/Documents/example"

その後...

<Directory "/Users/user/Documents/example">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   Allow from all</Directory>

2.ターミナルでchmodを使用して権限を設定します。

chmod 755 /Users/user/Documents/example

今、それは動作するはずです?代わりに、アクセスが禁止されます。これはerror_logからの出力です:

[Sun Jul 24 06:57:57 2011] [error] [client xx.xx.xx.xx] (13)Permission denied: access to /example denied
30
sjking

OS Xでもこの問題が発生していました。 gliptak は正しかったことが判明しましたが、さらに詳細を追加する必要があります。

ユーザーのホームフォルダーの下にあるフォルダーの仮想ディレクトリを構成しようとしています。これが問題を抱えている理由だと思います。私の場合、次のセットアップがありました。

  • ホームフォルダーは/Users/calrionです。
  • 仮想ディレクトリフォルダーは/Users/calrion/Path/to/wwwです。
  • /Users/calrion/Pathを指すシンボリックリンク/Volumes/Other/Users/calrion/Pathがあります。

問題は、ユーザーおよびグループ_www(OS X上でApacheが実行されている)が/Users/calrionおよび/Volumes/Other/Users/calrionへの実行アクセス権を持っていなかったことです。

chmod o+x /Users/calrionおよびchmod o+x /Volumes/Other/Users/calrionを実行すると、問題が解決されました(OS X 10.7.4上)。

ここでのルールは、Apacheがファイルを提供するために、パス内のallフォルダーへの実行アクセスを必要とすることです。これがないと、HTTP 403(禁止)を受け取ります。

26
Calrion

最後のストロー;)ディレクトリエントリで必要なローカル...

お気に入り

<Directory "/Users/user/Documents/example">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Require local
   Order allow,deny
   Allow from all
</Directory>

他のすべてが機能しない場合(エイリアス、httpd.confのディレクトリエントリ、およびmod/usr/grpを修正)。

留意してください:ユーザー空間にサイトを置く場合、Apacheユーザー(httpdを実行)はあなたの家にアクセスする必要があります!

13
Mirco Ellmann

これらはすべて非常に良い答えです。それらのどれも私のために働いた。

OSXサーバーでユーザーディレクトリを指すエイリアスが指定されています。私は長い間、_wwwユーザーをいじり、いじり、実行可能アクセス許可を再帰的に追加し、macportとこれを機能させるためのあらゆる種類のものをアンインストールしました。 777を試しました。なぜ機能しなかったのか分かりません。

最終的に、そのフォルダーのFinderで「共有フォルダー」チェックボックスをオンにしただけ指定したドメインで、PHPがアクティブで、希望どおりに機能しました。 :/...だから簡単だった。

10
greenland

/Users/user/Documents//Users/user/の許可を確認します(最初に、より高いレベルの許可が実施されます...)

Apacheを実行しているユーザー(www、www-dataなど)に/bin/suし、/Users/user/Documents/exampleディレクトリ内のcatファイルに。これは、セットアップに関する許可の問題を示している可能性があります。

10
gliptak

私はこのまったく同じ問題を抱えていました。私が見つけたのは、SE_Linuxが有効になっており、エイリアスディレクトリ内のファイルのセキュリティコンテキストが正しくなく、httpd_sys_content_tが欠落していることです。

ls -Zでセキュリティコンテキストを表示できます。ファイル/フォルダーにhttpd_sys_content_tがない場合、Apacheはそれらをサーバーしません。 chcon -R --type=httpd_sys_content_t /new_html_directoryなどの適切なコンテキストを追加できます。これにより、現在ディレクトリ内にあるファイルのコンテキストが変更されますが、後で追加されるファイルは変更されません(そのためにはsemanageを使用する必要があります)。他のオプションは、ファイルを/ var/wwwの下に残すことです。

6
sudol

これが私のためにそれを修正したものです:

/etc/Apache2/httpd.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None

    # REMOVE THESE LINES
    #Order deny,allow
    #Deny from all

    # ADD THIS LINE
    Require all denied
</Directory>

この変更は、 Apacheの2.2から2.4への更新 で行われた変更を実装します。 OSX Yosemiteの更新には、Apacheの更新が含まれていました(PSA:Yosemiteへのアップグレードを計画している場合は、壊れたものをすべて修正するために1週間予算を立ててください)。

奇妙なことは、Apache 2.4がすでに動作していることです。突然突然壊れます。..

PSA:Yosemiteへのアップグレードを計画している場合は、壊れたものをすべて修正するために1週間予算を立てます

4
edan

多くの時間を無駄にした後、私は問題を修正し、あなたの時間を節約するために共有したかった。

上記および他の投稿のすべての紳士の回答には正しい部分がありますが、以下は合計です

「/etc/Apache2/httpd.conf」ファイルで:

1-ドキュメントルートを変更する

Original: DocumentRoot "/Library/WebServer/Documents"
Change to: DocumentRoot "/Users/yourname/www"

2-変更

元の:

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

への変更:

<Directory /Users/yourname/www>
    Options FollowSymLinks Includes ExecCGI
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

3-変更:

元の:

<Directory "/Library/WebServer/Documents">

への変更:

<Directory "/Users/yourname/www">

4-最後に、あなたが夕食のユーザーである場合、このステップは必要ないかもしれません、これはあなたの新しいルートフォルダに正しい許可を設定することです

chmod 755 /Users/yourname/www

これが役立つことを願っています

3
Razmig

SELinuxは私にとっての犯人でした。 Linuxボックスでこの問題が発生し、エイリアスとファイルのアクセス許可が正しい場合は、「setenforce 0」を実行してSELinuxを許容モードに設定してみてください。それは私のためのトリックをしました。

0
ktbiz

クイックソリューション:

Linuxでこれらのコマンドをルートとして使用します。

find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;
0
Israelmikan

Apache構成ファイルを元に戻してから、サーバーを再度セットアップする必要がありました。これが便利だとわかった: https://Apple.stackexchange.com/questions/41143/how-to-revert-default-mac-Apache-install-to-original

0
TacoEater

それは確かに正しく見え、健全性チェックを行います。

  • apacheを再起動した

  • グループとユーザーの所有権を確認する

  • 引用符は削除できると思います

  • / Users/user/Documents/exampleに何かありますか?

  • 777をお試しください

-ショーン

0
Sean Kimball