Autorizzazioni di 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 cerco di eseguire il link ottengo:

Forbidden You don't have permission to access /~user_name on this server.

Dove e come cambio queste autorizzazioni?

    
posta David 10.12.2011 - 19:17
fonte

3 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".

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

cd /
sudo chmod -v 755 Users

Verifica 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
    
risposta data 16.08.2012 - 04:46
fonte
1

Supponendo che poche persone usino OS X in un ambiente di produzione, è bello lasciare che Apache faccia ciò che vuole con la radice del documento. Puoi farlo con la funzione "ereditarietà" delle 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 anche scritto da apache, anche se l'apache non ha creato loro.

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/

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

    
risposta data 13.08.2012 - 01:44
fonte
-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. apri Terminale
  2. cd /path/to/website
  3. chmod -r 644 .

Questo dovrebbe farlo Tieni presente che ciò renderà i tuoi file sorgente php leggibili a tutti.

    
risposta data 10.12.2011 - 21:04
fonte

Leggi altre domande sui tag