Autorizzazioni Apache


1

Sto cercando di far funzionare LAMP su OSx Lion e sto avendo un piccolo problema.

Avere Apache, MySQL e PHP configurati e funzionanti bene. Hanno attivato "Sito web" sotto la condivisione in Impostazioni. Rimosso la cartella ~ / user_name / Sites originale e creato un collegamento simbolico di Sites in una directory withint ~ / user_name.

Ora quando provo a correre http: // localhost / ~ nome_utente Ottengo:

Vietato Non hai il permesso di accedere a / ~ nome_utente su questo   server.

Dove e come cambio queste autorizzazioni?


1
Consiglio vivamente MAMP , che è come LAMP ma specificamente per il Mac. L'ho usato molto senza problemi di permessi.
Nathan Greenstein

Apache non segue i collegamenti simbolici per impostazione predefinita. Ma prima di provare a risolverlo, vediamo prima la configurazione di base. Riuscirai a ricreare il ~/Sites cartella, crea almeno un file html e prova ad accedervi tramite http://localhost/~user/the-file.html?
nohillside

Grazie, @patrix. Funziona bene. Eliminato i collegamenti simbolici e posso accedere a localhost / ~ user / test.html bene.
David

Ha finito per farlo funzionare cambiando quanto segue in httpd.conf & lt; Directory / & gt; Opzioni -Index include FollowSymLinks MultiViews AllowOverride Nessuno Opzioni Ordina consenti, nega Consenti da tutti & lt; / Directory & gt;
David

Basta attaccare con il documento predefinito root ( /Library/WebServer/Documents ) e creare un collegamento simbolico ad esso nella tua cartella home.
Abhi Beckert

Risposte:


2

Quando accedi ai siti web sul tuo "localhost", ci sono diverse autorizzazioni che sono richieste. Il contenuto del localhost potrebbe trovarsi nella directory di Sites, nel qual caso questi comandi potrebbero aiutare a prevenire eventuali messaggi "Proibiti".

Assicurarsi che la directory Users consenta l'accesso alla directory di lettura:

cd /
sudo chmod -v 755 Users

Assicurarsi che la directory del nome utente consenta l'accesso alla directory di lettura:

cd Users
sudo chmod -v 755 username

Verifica che la directory di Sites consenta l'accesso alla directory di lettura:

cd ~
chmod -v 755 Sites

Ogni sottodirectory di Sites richiede l'accesso in lettura:

cd ~/Sites
find ~/Sites -type d -print -exec chmod 755 {} \;

Ogni file in Siti e sottodirectory richiede l'accesso in lettura:

cd ~/Sites
fing ~/Sites -type f -print -exec chmod 644 {} \;

Apache usa il gruppo _www così, per dare ad Apache pieno accesso a tutto nella directory di Sites, imposta gli attributi estesi con questo:

chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" ~/Sites

1

Supponendo che poche persone usino OS X in un ambiente di produzione, è bello lasciare che Apache faccia ciò che vuole con la root del documento. Puoi farlo con la funzione "ereditarietà" di ACL:

sudo chmod -R +a "group:_www allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Library/WebServer/Documents/

Il comando precedente fornirà al gruppo apache predefinito l'accesso completo in lettura / scrittura a qualsiasi cosa nella radice del documento predefinita e applicherà i flag di "ereditarietà" in modo che qualsiasi nuovo file / directory creata possa essere scritto da apache, anche se Apache non li ha creati.

Mi piace anche eseguire questo comando:

sudo chmod -R +a "group:staff allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Library/WebServer/Documents/

Il che darà agli utenti "dello staff" (in pratica ciò significa che tutti gli utenti "reali") avranno pieno accesso a tutto, anche ai file creati da apache.


-1

Potresti usare chmod per impostare le autorizzazioni sulla cartella in cui si trova il tuo sito. Assicurati che l'utente Apache sia in esecuzione e potrebbe leggere qualsiasi cosa in quella cartella.

  1. aprire il terminale
  2. cd /path/to/website
  3. chmod -r 644 .

Questo dovrebbe farlo. Tieni presente che questo renderà i tuoi file sorgente php leggibili a chiunque.


Queste autorizzazioni (466) sono davvero sbagliate. Consentono all'utente di accedere in sola lettura, ma tutti gli altri hanno letto + accesso in scrittura. Tranne che, dato che non permettono a nessuno di eseguire (cioè cercare) l'accesso alle directory, nessuno può effettivamente accedere ai file all'interno (basta leggere e magari scrivere i loro nomi).
Gordon Davisson

Penso che tu intenda chmod 644
Andrew Vit

1
644 ha più senso, ma lascia comunque l'accesso in esecuzione (necessario per le directory). chmod -R u=rwX,go=rX . funzionerebbe, perché chmod considera il permesso "X" come "x se ha senso".
Gordon Davisson
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.