403 Errore proibito su Localhost Mac OS X.


22

Ho impostato la condivisione Web in Preferenze di Sistema su Mac OS X 10.6 e ho fatto clic sul collegamento che mi ha fornito lì. Sfortunatamente, Apache mi ha dato questo errore 403:

Vietato

Non sei autorizzato ad accedere a /~myusername/index.html su questo server.

Visualizza registro accessi: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

Viene visualizzato il registro degli errori: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

Curiosamente, l'accesso a http: // localhost funziona bene. È solo con due delle cartelle utente con cui ho problemi, l'altra cartella utente, che è più recente del mio aggiornamento del sistema, funziona bene.

Ho già funzionato sulla mia macchina in Leopard prima, quindi ho scritto tutto ~/Sitesa 755, il che non ha fatto nulla di buono. Eventuali suggerimenti? Presumo di aver fatto qualcosa alla mia macchina che ha causato questo, dal momento che non riesco a immaginare che Apple si incasini su qualcosa di simile.

Ho impostato PEAR con queste istruzioni , ma non ho idea se questa possa essere la causa.


Scusate se questa è una domanda stupida, ma esattamente a quale URL state andando? Lo chiedo perché l'URL "/~myusername/index.html" è strano - dovrebbe essere "~ myusername / index.html" o dovrebbe essere " localhost / ~ myusername / index.html " o qualcosa del genere simile. Basta iniziare da / e quindi aggiungere ~ myusername ha un odore divertente. Oltre a (o invece di) rispondere, puoi andare su Console.app (/Applications/Utilities/Console.app) e trovare apache2 access_log e error_log. Tiralo su, forse cancella il display, quindi riprova l'URL per vedere cosa ti dice il registro degli errori.
Michael H.

@khedron: l'URL è localhost / ~ myusername / index.html , ma l'errore visualizza la parte
/~myusername/index.html

OK, sto solo controllando. Cosa dice il registro apache nella console (console.app)?
Michael H.

@khedron: ho pubblicato l'accesso e il log degli errori nella domanda. Ce n'è un altro?
waiwai933,

1
Ho lo stesso problema, e lo faccio solo: chmod 777 / Applicazioni / XAMPP / htdocs / nome utente, funziona per me
Wassim Sboui,

Risposte:


22

Apple ha un documento di supporto per questo problema . Fissaggio del problema comporta la creazione di un file /etc/apache2/users/yourusername.conf( yourusername essendo l'account nome breve , per esempio danielbeck- di solito è il nome della vostra cartella home in /Users) con il seguente contenuto:

<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Successivamente, esegui sudo chown root:wheel /etc/apache2/users/yourusername.confe riavvia Apache.


e riavvia anche Apache, eseguilo sudo apachectl restartnel tuo terminale.
zero

15

Affinché Apache possa vedere il file, l'utente che Apache esegue (probabilmente wwwo _www) deve avere accesso alle directory dei Siti di questi utenti. Avere accesso in lettura / esecuzione al contenuto di ~/Sitesnon è sufficiente, perché deve essere permesso di attraversare /il percorso verso ~/Sites. In modo da assicurarsi /, /Users, /Users/myusername, e /Users/myusername/Sitestutti hanno almeno a+xl'autorizzazione (il bit di esecuzione su directory permette quella classe all'utente di attraversare la directory, anche se l'accesso in lettura non è consentito).

ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites

Se una di quelle directory non mostra l'ultimo xset (quello per "altri"), usa qualcosa di simile chmod a+x ...per impostarlo per quella directory.

Se l'ACL per una di quelle directory mostra che all'utente wwwè stato specificamente negato l'accesso, utilizzare gli argomenti appropriati chmodper correggere gli ACL.


Il bit di esecuzione è impostato per tutte quelle directory, ma non so come verificare se a un utente specifico è stato negato l'accesso.
waiwai933,

Ecco a cosa serve la "e" in "ls -lde". Elenca gli ACL (se presenti) per ciascuno dei file.
Spiff

2
La modifica delle autorizzazioni su / Users / myusername in chmod 755 ha risolto il problema per me.
Segna

Questo comando non consente all'utente _www di accedere alla directory principale, alla directory / Users, ecc.? Non può essere giusto, vero? Tutte quelle falle di sicurezza per condividere una pagina in una cartella? Questo comportamento è documentato da qualche parte?
Tom Lianza,

In risposta al mio commento, ho trovato questa risposta ( serverfault.com/a/293063/14970 ) che fornisce un collegamento a documentazione affidabile su questo comportamento: wiki.apache.org/httpd/13PermissionDenied
Tom Lianza

5

Per riferimento, ho appena affrontato questo problema e nessuna delle risposte qui ha funzionato nel mio caso specifico. Stavo configurando host virtuali, ma, soprattutto, avevo bisogno che i miei file htaccess funzionassero davvero.

Ho cambiato su "AllowOverride None" in "AllowOverride All" nel mio file /etc/apache2/users/USERNAME.conf e tutti i miei siti hanno iniziato a essere vietati.

L'ho cambiato di nuovo e poi l'ho cambiato solo per un sito nel mio file httpd-vhosts.conf, e solo quel sito era proibito.

Dopo aver esaminato i registri e aver riscontrato che il problema riguardava la riscrittura degli URL e la mancanza di FollowSymLinks, sono tornato al file USERNAME.conf. Commuto "AllowOverride None" su "AllowOverride All" e ho aggiunto "Options + FollowSymLinks" nella riga successiva.

Le cose hanno iniziato a funzionare. Sono venuto dall'uso di xampp su Windows e aveva molte di queste impostazioni già impostate a livello di server per i manichini come me.


1
grazie mille, ho trascorso un bel po 'di tempo a capire cosa stava succedendo, non ho dovuto armeggiare con Apache / PHP per un po' di tempo ormai
Misha Reyzlin

1
Sì, ha Options +FollowSymLinksfunzionato come un fascino.
Agarie,

2

Ho avuto lo stesso problema: il mio (vecchio) account non era accessibile, ma un altro account utente creato dopo l'aggiornamento a Lion ha funzionato perfettamente.

Dopo esserti accertato che il tuo /etc/apache2/users/USERNAME.conf sia simile al seguente:

<Directory "/Users/USERNAME/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

fare un root sudo chown: wheel /etc/apache2/users/USERNAME.conf

sembra che questa impostazione di autorizzazione non sia stata impostata durante l'aggiornamento del sistema operativo e l'utente Apache non sia in grado di leggere il file di configurazione e genera un errore.

Almeno questo mi ha risolto.


1
E forse inseguirlo sudo apachectl restart.
Arjan

Questo lavoro per me in esecuzione 10.7.5. Il percorso della Directory non puntava alla mia radice web locale, una volta che ho aggiornato e riavviato apache tutto ha funzionato. La cosa strana è che il percorso è stato errato per oltre un anno e ha funzionato tutto il tempo. Oggi ho appena ricevuto l'errore all'improvviso.
supajb,

2

aggiornamento per Lion nel 10/2011 ho dovuto aggiungere anche

UserDir abilitato quindi il mio /etc/apache2/extra/httpd-userdir.conf è così:

UserDir enabled 
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

<IfModule bonjour_module>
   RegisterUserSite customized-users
</IfModule>

1

Continuazione della conversazione dai commenti iniziali della domanda: controlla il tuo /etc/apache2/httpd.conffile. Sulla mia macchina, ho questo:

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

Sospetto che il tuo sia commentato. Ricordo vagamente di averlo cambiato a mano quando passavo da 10.5 a 10.6 e l'impostazione predefinita è cambiata.

Questo è probabilmente ovvio, ma dovrai usarlo sudoper modificare il file perché sarà di proprietà di root.


1
No, il mio sembra esattamente come il tuo.
waiwai933,

1

Il mio caso è XAMPP + Mac OS X 10.7 + Directory nella cartella Dropbox (riferimenti incrociati a un'altra mia domanda in Stack Overflow)

403 Access Forbidden è segnalato da Apache, quindi ho seguito il commento sopra per cambiare Utente in /XAMPP/xamppfiles/etc/httpd.conf, da User nobodya User my_user_name. Riavvia Apache e funziona benissimo.


0

Probabilmente non hai attivato gli indici . In caso contrario, dovrai creare un file indice ( index.htmlo index.php) o specificare il file in modo esplicito, ad es http://localhost/~me/mypage.html.


Spiacente, solo per ricontrollare, dovrei visitare localhost / ~ myusername / index.html e avere un file chiamato index.html nella cartella dei miei siti, giusto? In tal caso, il 403 sta ancora accadendo.
waiwai933,

Non dovresti visitare ~myusernameaffatto credo. http://localhost/dovrebbe puntare a /Users/youruser/Sites/.
Josh K,
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.