Mac OS X Localhostでの403 Forbidden Error


22

Mac OS X 10.6のシステム環境設定でWeb共有を設定し、そこにあるリンクをクリックしました。残念ながら、Apacheから次の403エラーが発生しました。

禁じられた

このサーバーの/~myusername/index.htmlにアクセスする権限がありません。

アクセスログの表示: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

エラーログの表示: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

不思議なことに、http:// localhostへのアクセスは問題なく動作します。私が問題を抱えているのは2つのユーザーフォルダーだけで、システムアップグレードよりも新しい他のユーザーフォルダーは正常に機能しています。

以前Leopardのマシンでこれを使っていたので、すべて~/Sitesを755に変更しましたが、何の効果もありませんでした。助言がありますか?Appleがこのようなことを台無しにすることは想像できないので、私はこれを引き起こしたマシンに何かをしたと思います。

これらの指示でPEARをセットアップしましたが、それが原因かどうかはわかりません。


これが馬鹿げた質問であれば申し訳ありませんが、正確にはどのURLに行きますか?URL "/~myusername/index.html"は奇妙なものです。 "〜myusername / index.html"であるか、 " localhost /〜myusername / index.html "などである必要があります。同様。/から始めて〜myusernameを追加するだけで、おかしいにおいがします。それに加えて(またはその代わりに)、Console.app(/Applications/Utilities/Console.app)にアクセスして、apache2 access_logおよびerror_logを見つけることができます。それを引き上げて、おそらく表示をクリアしてから、URLを再試行して、エラーログが示す内容を確認してください。
マイケルH.

@khedron:URLは、localhostの/〜myusernameと指定/ index.htmlのが、エラーが表示さ/~myusername/index.html一部
waiwai933

確認してください コンソール(console.app)でapacheログは何と言いますか?
マイケルH.

@khedron:質問にアクセスとエラーのログを投稿しました。別のものはありますか?
waiwai933

1
私はあなたと同じ問題を抱えている、と私はちょうど行います。私のためのchmod 777 /アプリケーション/ XAMPP / htdocsに/ myusernameと指定、それが仕事の
ワッシムSboui

回答:


22

Appleには、この問題のサポートドキュメントがあります。この問題を解決するには、次の内容のファイルを作成する必要があります/etc/apache2/users/yourusername.confyourusernameはアカウントのショートネーム、たとえばdanielbeck–通常はホームフォルダーの名前です/Users)。

<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

その後、sudo chown root:wheel /etc/apache2/users/yourusername.confApacheを実行して再起動します。


また、Apacheを再起動sudo apachectl restartし、ターミナルで実行するだけです。
nilの

15

Apacheがファイルを表示するには、Apacheを実行するユーザー(wwwまたは_www)がこれらのユーザーのサイトディレクトリにアクセスできる必要があります。のコンテンツへの読み取り/実行アクセス~/Sitesだけでは十分ではありません。/パスを下からに移動できるようにする必要があるため~/Sitesです。だから、確認してください//Users/Users/myusername、および/Users/myusername/Sitesすべてが少なくとも持っているa+x権限(ディレクトリの実行ビットは、読み取りアクセスが許可されていない場合でも、そのユーザークラスがディレクトリをトラバースすることができます)。

ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites

これらのディレクトリのいずれかが最後のxセット(「その他」のセット)を表示しない場合、そのディレクトリchmod a+x ...に設定するなどの方法を使用します。

これらのディレクトリのいずれかのACLで、ユーザーwwwが特にアクセスを拒否されていることが示されている場合は、適切な引数を使用しchmodてACLを修正します。


これらのディレクトリすべてに実行ビットが設定されていますが、特定のユーザーがアクセスを拒否されたかどうかを確認する方法がわかりません。
waiwai933

それが「ls -lde」の「e」の目的です。各ファイルのACL(ある場合)をリストします。
10

2
/ Users / myusernameの権限をchmod 755に変更すると、問題が修正されました。
マーク

このコマンドは、_wwwユーザーにルートディレクトリや/ Usersディレクトリなどにアクセスする許可を与えませんか?それはおそらく正しくないでしょうか?1つのフォルダーでページを共有するためのセキュリティホールはすべてありますか?この動作はどこかに文書化されていますか?
トムLianza

私自身のコメントへの返信、私は(この答えを見つけたserverfault.com/a/293063/14970:この動作の信頼性の高いドキュメントへのリンクを提供しています)wiki.apache.org/httpd/13PermissionDenied
トムLianza

5

参考までに、私はこれを扱っただけで、ここでの答えはどれも私の特定のケースではうまくいきませんでした。私は仮想ホストを設定していましたが、さらに重要なことは、実際に機能するためにhtaccessファイルが必要だったことです。

/etc/apache2/users/USERNAME.confファイルの「AllowOverride None」を「AllowOverride All」に変更し、すべてのサイトが禁止されるようになりました。

元に戻してから、httpd-vhosts.confファイル内の1つのサイトに対してのみ変更し、そのサイトのみが禁止されました。

ログを見て、URLの書き換えとFollowSymLinksの欠如に問題があることを確認した後、USERNAME.confファイルに戻りました。「AllowOverride None」を「AllowOverride All」に切り替え、次の行に「Options + FollowSymLinks」を追加しました。

物事は働き始めました。私はWindows上でxamppを使用してきましたが、これらの設定の多くはすでに私のようなダミーのためにサーバー全体に設定されていました。


1
おかげでそんなに、何が起こっているかを考え出すかなりの時間を費やし、今いくつかの時間のためのApache / PHPでティンクルする必要はありませんでした
ミーシャReyzlin

1
うん、Options +FollowSymLinks魅力のように働いた。
アガリー

2

同じ問題がありました:私の(古い)アカウントにはアクセスできませんでしたが、Lionにアップグレードした後に作成された別のユーザーのアカウントはうまく機能しました。

/etc/apache2/users/USERNAME.confが次のようになっていることを確認した後:

<Directory "/Users/USERNAME/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

sudo chown root:wheel /etc/apache2/users/USERNAME.confを実行します

OSのアップグレード中にこの許可設定が設定されていないように見え、Apacheユーザーは設定ファイルを読み取れず、エラーをスローします。

少なくともこれで解決しました。


1
そして、おそらくsudo apachectl restartその後実行します。
アルジャン

これは10.7.5を実行している私にとってはうまくいきます。Apacheパスを更新して再起動すると、ディレクトリパスはローカルのWebルートを指していませんでした。奇妙なのは、パスが1年以上間違っていて、ずっと機能していたことです。今日エラーが発生しました。
supajb

2

2011年10月のライオンの更新も追加する必要がありました

UserDirが有効になっているため、/ etc / apache2 / extra / httpd-userdir.confは次のようになります。

UserDir enabled 
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

<IfModule bonjour_module>
   RegisterUserSite customized-users
</IfModule>

1

最初の質問のコメントから会話を続ける- /etc/apache2/httpd.confファイルをチェックしてください。私のマシンでは、これがあります:

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

あなたのコメントはコメントアウトされていると思います。10.5から10.6に移行するときにこれを手動で変更したことを漠然と思い出し、デフォルトが変更されました。

これはおそらく明らかですがsudo、ファイルはrootが所有するため、ファイルの編集に使用する必要があります。


1
いいえ、私のものはあなたのものとまったく同じです。
waiwai933

1

私の場合は、XAMPP + Mac OS X 10.7 + Dropbox Folderのディレクトリです(Stack Overflowでの私の別の質問を相互参照します)

403 Access ForbiddenはApacheによって報告されているため、上記のコメントに従って、のUserをからに変更/XAMPP/xamppfiles/etc/httpd.confUser nobodyましたUser my_user_name。Apacheを再起動すると正常に動作します。


0

おそらくインデックスが有効になっていないでしょう。そうでない場合は、インデックスファイル(index.htmlまたはindex.php)を作成するか、明示的にファイルを指定する必要がありますhttp://localhost/~me/mypage.html


申し訳ありませんが、再確認するには、localhost /〜myusername / index.htmlにアクセスして、サイトフォルダーにindex.htmlというファイルを作成する必要があります。その場合、403はまだ発生しています。
waiwai933

あなたは~myusername私が信じているすべてを訪問するべきではありません。http://localhost/を指す必要があり/Users/youruser/Sites/ます。
ジョシュK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.