Apache: Reicht chmod 755 nicht aus, um Symlink oder Alias ​​unter Apache httpd unter Mac OS 10.5 einzurichten?

15

Auf meinem Mac OS 10.5 Maschine, würde Ich mag einen Unterordner von einzurichten ~/Documentswie ~/Documents/foo/htmlzu http: // localhost / foo .

Das erste, was ich überlegt habe, ist die Verwendung von Alias ​​wie folgt:

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

Das hat mir verboten. Im error_log habe ich:

[error] [client ::1] (13)Permission denied: access to /foo denied

Der betreffende Unterordner hat Zugriff auf chmod 755. Ich habe versucht, Likes wie http: //localhost/foo/test.php anzugeben , aber das hat auch nicht funktioniert. Als nächstes habe ich die Symlink-Route ausprobiert.

Ging in /Library/WebServer/Documentsund machte einen Symlink zu ~/Documents/foo/html. Der Dokumentenstamm hat

Options Indexes FollowSymLinks MultiViews

Das hat mir noch 403 verboten:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

Was muss ich sonst noch einrichten?

Lösung :

$ chmod 755 ~/Documents

Im Allgemeinen müssen der freizugebende Ordner und der gesamte Vorgängerordner für den wwwDienstbenutzer sichtbar sein .

Eugene Yokota
quelle
Vielen Dank für das Posten dieser Lösung - das hat mir wirklich geholfen, nachdem ich ewig nach der Antwort gesucht hatte
Tomba
@Tomba Kein Problem.
Eugene Yokota

Antworten:

24

Ich wette, dass ein Verzeichnis über dem Verzeichnis, auf das Sie zugreifen möchten, keine Berechtigungen hat, um Apache das Durchlaufen zu ermöglichen. Werden Sie der Benutzer, unter dem Apache ausgeführt wird ( sudo -i -u apacheoder was auch immer), und versuchen Sie, in das Verzeichnis von Interesse zu wechseln ls. Wenn Sie dies nicht können (wie erwartet), versuchen Sie, nacheinander in die darüber liegenden Verzeichnisse zu gelangen, bis Sie dazu aufgefordert werden. Das Unterverzeichnis ist dasjenige, das o+xfestgelegt werden muss. Aufschäumen, ausspülen, nach Bedarf wiederholen.

womble
quelle
1
Ja, wenn ‚Sites‘ funktioniert, haben Sie wahrscheinlich ein richtiges Problem auf Dokumente haben, wenn ‚Sites‘ nicht funktionieren , haben Sie wahrscheinlich ein richtiges Problem auf Ihrem Benutzerverzeichnis haben (dies kann Appends mit Filevault)
Radius
1
~ / Documents war 700.
Eugene Yokota
Wenn ich sudo -i -u _wwwunter OS X arbeite (da der Apache-Benutzer in der Apache-Standardkonfiguration unter OS X _www ist), erhalte whoamiich trotzdem meinen Benutzernamen und nicht _www
Jason S
Um mit sudo zu einem anderen Benutzer zu wechseln, benutze ich '-' für sich: sudo - www-data(für Ubuntu).
Alexis Wilke
2

Verwenden +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>
Dave Cheney
quelle
Laut httpd.apache.org/docs/2.0/en/mod/core.html#options werden "die Optionen zusammengeführt , wenn allen Optionen in der Options-Direktive ein + oder - vorangestellt ist." Wie wird das helfen ~ / Documents zu sein 700?
Eugene Yokota
AFAIK FollowSymLinks aktiviert die Option nicht, sondern nur auf einer niedrigeren Ebene der Verzeichnishierarchie.
Dave Cheney
1
Das war die richtige Antwort für mich. Ich habe die conf-Datei in / etc / apache2 / users geändert und FollowSymLinks (ohne das +) zugelassen. Denken Sie daran, neu zu starten.
Superluminary
1

Stellen Sie sicher, dass der Dateitresor nicht aktiviert ist. Ich hatte das gleiche problem Ich habe alles versucht, was ich finden konnte. Nichts hat geklappt. Aber nachdem ich eine Stunde lang versucht hatte, dies herauszufinden, erinnerte ich mich, dass ich File Vault aktiviert hatte.

Durch Deaktivieren wurde das Problem behoben.

Bob
quelle
1

Überprüfen Sie die Symlink-Inhaberschaft. Da Sie unter Mac OS X arbeiten, können die Symlink-Besitzer geändert werden. In /Library/WebServer/Documentsdols -l

Wenn Ihr Symlink zu ~/Documents/foo/htmlaufgerufen wird foound Berechtigungen wie hat

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

Unter OS X wird Apache dann standardmäßig als _www-Benutzer und _www-Gruppe ausgeführt. In diesem Fall kann der Symlink nicht überquert werden ~/Documents/foo/html

Führen Sie man 8 chownauf dem System - Terminal oder sehen Sie sie online Mann chown

Sie werden sehen, dass durch die Verwendung dieser -hOption der Eigentümer des Symlinks selbst geändert wird und nicht die Datei, auf die er verweist (die Quelle). Dann kannst du sowas machen

sudo chown -h :_www foo 

Dies ändert den Simlink zu

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

und die Apache _www-Gruppe wird in der Lage sein, den Link zu durchlaufen.

Jason S
quelle
0

Überprüfen Sie Ihr / Users-Verzeichnis (ls -l / Users), um die Rechte für Ihren Benutzer (jemanden) anzuzeigen.
Ist das 'Sites'-Verzeichnis auch auf localhost / ~ someone korrekt verfügbar?

Radius
quelle
localhost / ~ jemand arbeitet.
Eugene Yokota