Apache: chmod 755 non è sufficiente per configurare symlink o alias su Apache httpd su Mac OS 10.5?


15

Sul mio computer Mac OS 10.5, vorrei impostare una sottocartella ~/Documentssimile ~/Documents/foo/htmla http: // localhost / foo .

La prima cosa che ho pensato di fare è usare Alias ​​come segue:

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

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

    Order allow,deny
    Allow from all
</Directory>

Questo mi ha fatto 403 Proibito. Nel error_log ho ottenuto:

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

La sottocartella in questione ha accesso a chmod 755. Ho provato a specificare Mi piace come http: //localhost/foo/test.php , ma non ha funzionato neanche. Successivamente, ho provato il percorso del collegamento simbolico.

È entrato /Library/WebServer/Documentse ha creato un collegamento simbolico a ~/Documents/foo/html. La radice del documento ha

Options Indexes FollowSymLinks MultiViews

Questo mi ha ancora 403 proibito:

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

Cos'altro ho bisogno per configurarlo?

Soluzione :

$ chmod 755 ~/Documents

In generale, la cartella da condividere e tutta la sua cartella antenata deve essere visualizzabile wwwdall'utente del servizio.


Grazie mille per aver pubblicato questa soluzione - questo mi ha davvero aiutato dopo aver passato anni a cercare la risposta
Tomba

@Tomba Nessun problema.
Eugene Yokota,

Risposte:


24

Scommetto che una directory sopra quella a cui si desidera accedere non dispone delle autorizzazioni per consentire ad Apache di attraversarla. Diventa l'utente che Apache è in esecuzione ( sudo -i -u apacheo qualunque altra cosa), quindi prova a passare alla directory di interesse e ad lsessa. Se non puoi (come previsto), prova ad entrare nelle directory sopra di esso, uno per uno, fino a quando uno non ti lascia entrare. La sottodirectory è quella che deve essere o+ximpostata. Raccogliere, sciacquare, ripetere come richiesto.


1
Sì, se "Sites" funziona, probabilmente hai un problema corretto su Documents, se "Sites" non funziona probabilmente hai un problema giusto nella tua directory utente (questo può essere aggiunto con filevault)
raggio

1
~ / I documenti erano 700.
Eugene Yokota,

Se corro sudo -i -u _wwwsu OS X (poiché l'utente Apache è _www nella configurazione predefinita di Apache su OS X), allora lo faccio whoami, ottengo ancora il mio nome utente, non _www
Jason S

Per passare completamente a un altro utente con sudo, uso '-' da solo: sudo - www-data(per Ubuntu).
Alexis Wilke,

2

Uso +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>

Secondo httpd.apache.org/docs/2.0/en/mod/core.html#options , "se tutte le opzioni della direttiva Opzioni sono precedute da un simbolo + o -, le opzioni vengono unite". In che modo sarà d'aiuto ~ / I documenti sono 700?
Eugene Yokota,

AFAIK FollowSymLinks non abilita l'opzione, consente solo di abilitarla a un livello inferiore della gerarchia di directory.
Dave Cheney,

1
Questa è stata la risposta corretta per me. Ho modificato il file conf in / etc / apache2 / users e ho permesso a FollowSymLinks (senza il +). Ricorda di riavviare.
superluminario,

1

Verificare che il vault non sia abilitato. Ho avuto lo stesso problema. Ho provato tutto il resto che ho potuto trovare. Niente ha funzionato. Ma dopo un'ora di tentativi per capirlo, ho ricordato che avevo abilitato il vault.

La disabilitazione ha risolto il problema.


1

Controlla la proprietà del link simbolico. Dato che sei su Mac OS X, è possibile modificare i proprietari dei link simbolici. Nel /Library/WebServer/Documentsfarels -l

Se il tuo link simbolico a ~/Documents/foo/htmlviene chiamato fooe dispone di autorizzazioni simili

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

Quindi per impostazione predefinita su OS X Apache viene eseguito come utente _www e gruppo _www, quindi nel caso sopra menzionato non sarà in grado di attraversare il collegamento simbolico a ~/Documents/foo/html

Esegui man 8 chownsul tuo terminale di sistema o guardalo chown uomo online

Vedrai che l'uso -hdell'opzione cambierà la proprietà del link simbolico stesso, piuttosto che il file a cui punta (è sorgente). Quindi puoi fare qualcosa del genere

sudo chown -h :_www foo 

Questo cambierà il simlink in

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

e il gruppo Apache _www sarà in grado di attraversare il collegamento.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.