403 Verbotener Fehler unter Mac OS X Localhost

22

Ich habe die Webfreigabe in den Systemeinstellungen unter Mac OS X 10.6 eingerichtet und auf den dort angegebenen Link geklickt. Leider hat mir Apache diesen 403-Fehler gegeben:

verboten

Sie haben auf diesem Server keine Berechtigung, auf /~myusername/index.html zuzugreifen.

Das Zugriffsprotokoll zeigt Folgendes an: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

Fehlerprotokoll wird angezeigt: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

Seltsamerweise funktioniert der Zugriff auf http: // localhost einwandfrei. Es ist nur mit zwei der Benutzerordner, mit denen ich Probleme habe, der andere Benutzerordner, der neuer als mein System-Upgrade ist, funktioniert einwandfrei.

Ich hatte das schon einmal auf meinem Rechner in Leopard, also habe ich alles ~/Sitesauf 755 geändert , was nicht gut war. Irgendwelche Vorschläge? Ich nehme an, dass ich etwas an meinem Computer getan habe, das dies verursacht hat, da ich mir nicht vorstellen kann, dass Apple etwas in die Irre führt.

Ich habe PEAR mit diesen Anweisungen eingerichtet , aber ich habe keine Ahnung, ob dies die Ursache sein könnte.

waiwai933
quelle
Tut mir leid, wenn dies eine dumme Frage ist, aber genau zu welcher URL gehst du? Ich frage, weil die URL "/~myusername/index.html" eine ungerade ist - sie sollte entweder "~ myusername / index.html" oder " localhost / ~ myusername / index.html " sein oder so ähnlich. Einfach mit / beginnen und dann ~ myusername hinzufügen, das riecht komisch. Zusätzlich zu (oder anstatt) zu antworten, können Sie Console.app (/Applications/Utilities/Console.app) aufrufen und nach apache2 access_log und error_log suchen. Rufen Sie das auf, löschen Sie möglicherweise die Anzeige und versuchen Sie es erneut mit Ihrer URL, um zu sehen, was das Fehlerprotokoll Ihnen sagt.
Michael H.
@khedron: Die URL lautet localhost / ~ meinbenutzername / index.html , aber der Fehler zeigt den Teil /~meinbenutzername/index.html an
waiwai933 30.06.10
OK, überprüfe nur. Was sagt das Apache-Protokoll in der Konsole (console.app)?
Michael H.
@khedron: Ich habe das Zugangs- und Fehlerprotokoll in der Frage gepostet. Gibt es noch einen?
Waiwai933
1
Ich habe das gleiche Problem wie Sie und tue es einfach: chmod 777 / Applications / XAMPP / htdocs / myusername, es funktioniert für mich
Wassim Sboui

Antworten:

22

Apple hat ein Support-Dokument für dieses Problem . Um das Problem zu beheben , müssen Sie eine Datei mit folgendem Inhalt erstellen /etc/apache2/users/yourusername.conf( Ihr Benutzername ist der Kurzname des Kontos , z. B. danielbeckder Name Ihres privaten Ordners /Users):

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

Führen Sie anschließend sudo chown root:wheel /etc/apache2/users/yourusername.confApache aus und starten Sie es neu.

Daniel Beck
quelle
und starte auch deinen apache neu, führe ihn einfach sudo apachectl restartin deinem terminal aus.
nil
15

Damit Apache die Datei sehen kann, muss der Benutzer, unter dem Apache ausgeführt wird (wahrscheinlich wwwoder _www), Zugriff auf die Sites-Verzeichnisse dieser Benutzer haben. Ein Lese- / Ausführungszugriff auf den Inhalt von ~/Sitesist nicht ausreichend, da er von /unten nach unten durchlaufen werden muss ~/Sites. So sicher machen /, /Users, /Users/myusername, und /Users/myusername/Sitesalle haben zumindest die a+xErlaubnis (der Ausführungs - Bit auf Verzeichnisse ermöglicht , dass Benutzerklasse das Verzeichnis zu durchlaufen, auch wenn Lesezugriff ist nicht erlaubt).

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

Wenn in einem dieser Verzeichnisse nicht der letzte xSatz angezeigt wird (der für "andere"), verwenden Sie so etwas wie chmod a+x ...diesen für dieses Verzeichnis.

Wenn die wwwZugriffssteuerungsliste für eines dieser Verzeichnisse anzeigt, dass dem Benutzer der Zugriff ausdrücklich verweigert wurde, verwenden Sie die entsprechenden Argumente chmod, um die Zugriffssteuerungslisten zu korrigieren.

Spiff
quelle
Das Ausführungsbit ist für alle diese Verzeichnisse gesetzt, aber ich kann nicht überprüfen, ob einem bestimmten Benutzer der Zugriff verweigert wurde.
waiwai933
Dafür steht das "e" in "ls-lde". Hier werden die ACLs (falls vorhanden) für jede der Dateien aufgelistet.
Spiff
2
Das Ändern der Berechtigungen für / Users / myusername in chmod 755 hat das Problem für mich behoben.
Markieren Sie
Erteilt dieser Befehl dem Benutzer _www nicht die Berechtigung, auf Ihr Stammverzeichnis sowie auf das Verzeichnis / Users usw. zuzugreifen? Das kann doch nicht richtig sein, oder? All diese Sicherheitslücken, um eine Seite in einem Ordner freizugeben? Ist dieses Verhalten irgendwo dokumentiert?
Tom Lianza
Als Antwort auf meinen eigenen Kommentar fand ich diese Antwort ( serverfault.com/a/293063/14970 ), die einen Link zu zuverlässiger Dokumentation zu diesem Verhalten enthält: wiki.apache.org/httpd/13PermissionDenied
Tom Lianza
5

Als Referenz habe ich mich nur darum gekümmert und keine der Antworten hier hat in meinem speziellen Fall funktioniert. Ich habe virtuelle Hosts konfiguriert, aber was noch wichtiger ist, ich brauchte meine htaccess-Dateien, um tatsächlich zu funktionieren.

Ich habe in meiner /etc/apache2/users/USERNAME.conf-Datei bei "AllowOverride None" in "AllowOverride All" geändert und alle meine Websites wurden verboten.

Ich habe es zurück- und dann nur für eine Site in meiner httpd-vhosts.conf-Datei geändert, und nur diese Site wurde verboten.

Nachdem ich mir die Protokolle angesehen hatte und das Problem mit dem Umschreiben der URLs und dem Fehlen von FollowSymLinks festgestellt hatte, ging ich zurück zur Datei USERNAME.conf. Ich schalte "AllowOverride None" auf "AllowOverride All" und füge in der nächsten Zeile "Options + FollowSymLinks" hinzu.

Die Dinge begannen zu funktionieren. Ich habe xampp unter Windows verwendet und viele dieser Einstellungen waren für Dummies wie mich bereits serverweit festgelegt.

Jake
quelle
1
Vielen Dank, verbrachte einige Zeit damit, herauszufinden, was los ist. Ich musste jetzt seit einiger Zeit nicht mehr mit Apache / PHP
klingeln
1
Ja, Options +FollowSymLinkswirkte wie ein Zauber.
Agarie
2

Ich hatte das gleiche Problem: Auf mein (altes) Konto konnte nicht zugegriffen werden, aber das Konto eines anderen Benutzers, das nach dem Upgrade auf Lion erstellt wurde, funktionierte einwandfrei.

Nachdem Sie sichergestellt haben, dass Ihre /etc/apache2/users/USERNAME.conf folgendermaßen aussieht:

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

mache einen sudo chown root: wheel /etc/apache2/users/USERNAME.conf

Es scheint, dass diese Berechtigungseinstellung während des Betriebssystem-Upgrades nicht festgelegt wurde und der Apache-Benutzer die Konfigurationsdatei nicht lesen kann und einen Fehler auslöst.

Zumindest hat das für mich geklärt.

Arve Nygård
quelle
1
Und vielleicht danach rennen sudo apachectl restart.
Arjan
Das funktioniert bei mir unter 10.7.5. Der Verzeichnispfad zeigte nicht auf mein lokales Webstammverzeichnis, nachdem ich Apache aktualisiert und neu gestartet hatte, funktionierte alles. Merkwürdig ist, dass der Pfad seit über einem Jahr nicht mehr stimmt und die ganze Zeit funktioniert hat. Ich habe gerade den Fehler heute aus heiterem Himmel.
3.
2

Update für Lion 10/2011 musste ich auch hinzufügen

UserDir ist so aktiviert, dass meine /etc/apache2/extra/httpd-userdir.conf so aussieht:

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>
nunya
quelle
1

Fortsetzung der Konversation mit den Kommentaren der ersten Frage - Überprüfen Sie Ihre /etc/apache2/httpd.confDatei. Auf meinem Computer habe ich Folgendes:

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

Ich vermute, deine ist auskommentiert. Ich erinnere mich vage daran, dies von Hand geändert zu haben, als ich von 10.5 auf 10.6 umgestiegen bin und die Standardeinstellung geändert wurde.

Dies ist wahrscheinlich offensichtlich, aber Sie müssen es verwenden sudo, um die Datei zu bearbeiten, da sie im Besitz von root ist.

Michael H.
quelle
1
Nein, meins sieht genauso aus wie deins.
Waiwai933
1

Mein Fall ist XAMPP + Mac OS X 10.7 + Verzeichnis im Dropbox-Ordner (Querverweis auf meine andere Frage im Stapelüberlauf)

403 Access Forbidden wird von Apache gemeldet, daher bin ich dem obigen Kommentar gefolgt, um den Benutzer in /XAMPP/xamppfiles/etc/httpd.conf, von User nobodynach zu ändern User my_user_name. Starten Sie Apache neu und es funktioniert einwandfrei.

Raubvogel
quelle
0

Sie haben wahrscheinlich keine Indizes aktiviert . Wenn Sie dies nicht tun, müssen Sie entweder eine Indexdatei ( index.htmloder index.php) erstellen oder die Datei explizit angeben, d http://localhost/~me/mypage.html. H.

Josh K
quelle
Tut mir leid, um es noch einmal zu überprüfen, sollte ich localhost / ~ myusername / index.html besuchen und eine Datei namens index.html in meinem Sites-Ordner haben, oder? Wenn ja, dann passiert der 403 immer noch.
Waiwai933
Sie sollten überhaupt nicht besuchen, ~myusernameglaube ich. http://localhost/sollte zeigen auf /Users/youruser/Sites/.
Josh K