wake-up-neo.net

403 Verbot für Aliasverzeichnis mit Apache

Ich versuche, einen Aliasnamen einzurichten, der auf ein Verzeichnis in meinem Dateisystem verweist, das sich nicht in DocumentRoot befindet. Jetzt bekomme ich eine 403 Verbotene Antwort. Dies sind die folgenden Schritte: 1. editiere http.conf und füge hinzu:

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

dann...

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

2. Setzen von Berechtigungen mit chmod im Terminal:

chmod 755 /Users/user/Documents/example

Jetzt sollte es klappen Stattdessen bekomme ich den Zugang verboten. Dies ist die Ausgabe von error_log:

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

Ich hatte dieses Problem auch unter OS X. Es stellte sich heraus, dass gliptak richtig war, aber ich muss noch ein paar Details hinzufügen.

Wir versuchen beide, ein virtuelles Verzeichnis für einen Ordner im Basisordner eines Benutzers zu konfigurieren. Ich denke, deshalb haben wir das Problem. In meinem Fall hatte ich folgende Einstellungen:

  • Der Home-Ordner lautet /Users/calrion.
  • Der Ordner des virtuellen Verzeichnisses lautet /Users/calrion/Path/to/www.
  • Es gibt einen symbolischen Link /Users/calrion/Path, der auf /Volumes/Other/Users/calrion/Path zeigt.

Das Problem war, dass der Benutzer und die Gruppe _www (die von Apache unter OS X ausgeführt wird) keinen Zugriff auf /Users/calrion und /Volumes/Other/Users/calrion haben.

Durch Ausführen von chmod o+x /Users/calrion und chmod o+x /Volumes/Other/Users/calrion wurde das Problem behoben (unter OS X 10.7.4).

Die Regel hier ist, dass Apache Zugriff auf die Ordner all im Pfad benötigt, um Dateien zu liefern. Andernfalls erhalten Sie ein HTTP 403 (verboten).

26
Calrion

Der letzte Strohhalm;) Erforderliches local im Verzeichniseintrag ...

mögen

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

wenn alles andere nicht funktioniert (korrekter Alias, Verzeichniseintrag in httpd.conf und korrekter mod/usr/grp).

denken Sie daran: Wenn Sie Ihre Site in den User-Space stellen, benötigt der Apache-Benutzer (der httpd ausführt) Zugriff auf Ihr Zuhause!

13
Mirco Ellmann

Das sind alles sehr gute Antworten ... Keine von ihnen hat für mich gearbeitet.

Auf dem OSX-Server ist ein Alias ​​angegeben, der auf ein Benutzerverzeichnis verweist. Ich habe eine ganze Weile mit dem _www-Benutzer chmodding und herumgespielt, rekursiv die Berechtigungen für ausführbare Dateien hinzugefügt, macports und alle möglichen Dinge deinstalliert und versucht, dies zum Laufen zu bringen. Ich habe es mit 777 versucht. Nein. Keine Ahnung, warum es nicht funktioniert hat.

Schließlich war ich habe gerade das Kontrollkästchen "freigegebener Ordner" aktiviert im Finder für diesen Ordner, und es funktionierte auf der angegebenen Domäne mit PHP, so wie ich es wollte. :/... das war also einfach.

9
greenland

Überprüfen Sie die Berechtigung für /Users/user/Documents/, /Users/user/ (Berechtigungen auf höherer Ebene werden zuerst erzwungen ...)

/bin/su in den Benutzer, der Apache ausführt (wie www, www-data) und cat eine Datei im Verzeichnis /Users/user/Documents/example. Dies kann Sie auf Erlaubnisprobleme bei Ihrem Setup hinweisen.

9
gliptak

Ich hatte gerade das gleiche Problem. Was ich fand, war, dass SE_Linux aktiviert war, und der Sicherheitskontext der Dateien in meinem Verzeichnis mit Alias-Dateien war falsch. Es fehlte httpd_sys_content_t. 

Sie können den Sicherheitskontext mit ls -Z anzeigen. Wenn Ihre Dateien/Ordner nicht über httpd_sys_content_t verfügen, werden sie von Apache nicht verwaltet. Sie können den richtigen Kontext mit etwas wie chcon -R --type=httpd_sys_content_t /new_html_directory hinzufügen. Dies ändert den Kontext der aktuell im Verzeichnis befindlichen Dateien, nicht jedoch der Dateien, die später hinzugefügt werden (dazu müssen Sie mit semanage arbeiten). Ihre andere Option ist, die Dateien nur unter/var/www zu belassen.

6
sudol

Folgendes hat es für mich behoben:

im /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>

Diese Änderung implementiert Änderungen, die in Apache-Update von 2.2 auf 2.4 vorgenommen wurden. Das OSX Yosemite-Update brachte das Apache-Update mit (PSA: Wenn Sie ein Upgrade auf Yosemite planen, sollten Sie eine Woche einplanen, um alle Probleme zu beheben).

Das seltsame ist, dass ich Apache 2.4 bereits zum Laufen gebracht habe und es plötzlich wieder kaputt geht.

PSA: Wenn Sie ein Upgrade auf Yosemite planen, planen Sie eine Woche ein, um alle Probleme zu beheben.

4
edan

Nachdem ich viel Zeit verschwendet hatte, habe ich das Problem behoben und wollte es teilen, um Zeit zu sparen.

Alle Gentelmen oben und in anderen Beiträgen haben einige richtige Teile in ihren Antworten, aber unten ist die Summe

In Ihrer Datei "/etc/Apache2/httpd.conf":

1- Ändern Sie Ihren Dokumentenstamm

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

2- ändern

Original: 

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

Ändern: 

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

3- Änderung: 

Original: 

<Directory "/Library/WebServer/Documents">

Ändern:

<Directory "/Users/yourname/www">

4- Wenn Sie der Supper-Benutzer sind, benötigen Sie diesen Schritt möglicherweise nicht

chmod 755 /Users/yourname/www

Hoffe das wird helfen

3
Razmig

SELinux war der Schuldige für mich. Wenn Sie dieses Problem in einer Linux-Box haben und Ihre Alias- und Dateiberechtigungen korrekt sind, versuchen Sie eine "setenforce 0", um SELinux in den zulässigen Modus zu setzen. Das hat den Trick für mich gemacht.

0
ktbiz

Schnelle Lösung:

Verwenden Sie diese Befehle als root unter Linux:

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

Ich musste meine Apache-Konfigurationsdatei zurücksetzen und den Server erneut einrichten. fand dies nützlich: https://Apple.stackexchange.com/questions/41143/how-to-revert-default-mac-Apache-install-to-original

0
TacoEater

Es sieht auf jeden Fall richtig aus, machen Sie eine Vernunftsprüfung.

  • sie haben Apache neu gestartet

  • Überprüfen Sie die Gruppen- und Benutzerrechte

  • Ich denke, die Zitate können entfernt werden

  • gibt es etwas in/Benutzer/Benutzer/Dokumente/Beispiel? 

  • versuche 777

-sean

0
Sean Kimball