403 Error prohibido en Mac OS X Localhost

22

Configuré Web Sharing en System Preferences en Mac OS X 10.6 e hice clic en el enlace que me dio allí. Desafortunadamente, Apache me dio este error 403:

Prohibido

No tiene permiso para acceder a /~myusername/index.html en este servidor.

El registro de acceso muestra: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

Se muestra el registro de errores: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

Curiosamente, acceder a http: // localhost funciona bien. Es solo con dos de las carpetas de usuario con las que tengo problemas, la otra carpeta de usuario, que es más nueva que la actualización de mi sistema, funciona bien.

He tenido esto trabajando en mi máquina en Leopard antes, así que cambié todo ~/Sitesa 755, lo que no sirvió de nada. ¿Alguna sugerencia? Supongo que le he hecho algo a mi máquina que causó esto, ya que no puedo imaginar que Apple arruine algo como esto.

Configuré PEAR con estas instrucciones , pero no tengo idea si esa podría ser la causa.

waiwai933
fuente
Lo siento si esta es una pregunta tonta, pero ¿exactamente a qué URL vas? Pregunto porque la URL "/~myusername/index.html" es extraña: debe ser "~ myusername / index.html" o " localhost / ~ myusername / index.html ", o algo así. similar. Simplemente comenzando desde / y luego agregando ~ myusername huele raro. Además de (o en lugar de) responder eso, puede ir a Console.app (/Applications/Utilities/Console.app) y encontrar el registro de acceso y error_log de apache2. Tire hacia arriba, tal vez borre la pantalla y luego vuelva a intentar su URL para ver qué le dice el registro de errores.
Michael H.
@khedron: La URL es localhost / ~ myusername / index.html , pero el error muestra la parte
/~myusername/index.html
OK, solo revisando. ¿Qué dice el registro de apache en la consola (console.app)?
Michael H.
@ khedron: publiqué el acceso y el registro de errores en la pregunta. ¿Hay otro?
waiwai933
1
Tengo el mismo problema que tú y acabo de hacerlo: chmod 777 / Applications / XAMPP / htdocs / myusername, funciona para mí
Wassim Sboui

Respuestas:

22

Apple tiene un documento de soporte para este problema . La solución del problema implica la creación de un archivo /etc/apache2/users/yourusername.conf(su nombre de usuario es el nombre corto de la cuenta , por ejemplo danielbeck, generalmente es el nombre de su carpeta de inicio /Users) con el siguiente contenido:

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

Luego, ejecute sudo chown root:wheel /etc/apache2/users/yourusername.confy reinicie Apache.

Daniel Beck
fuente
y también reinicie su apache, solo ejecute sudo apachectl restarten su terminal.
nulo
15

Para que Apache vea el archivo, el usuario que Apache ejecuta como (probablemente wwwo _www) debe tener acceso a los directorios de Sitios de estos usuarios. Tener acceso de lectura / ejecución a los contenidos de ~/Sitesno es suficiente, ya que debe permitirse atravesar /el camino hacia abajo ~/Sites. Así que asegúrese de /, /Users, /Users/myusername, y /Users/myusername/Sitestodos tienen al menos a+xel permiso (el bit de ejecución en los directorios permite que la clase usuario cruzar el directorio, incluso si no se permite el acceso de lectura).

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

Si alguno de esos directorios no muestra el último xconjunto (el de "otros"), utilice algo como chmod a+x ...configurarlo para ese directorio.

Si la ACL de cualquiera de esos directorios muestra que wwwse le ha denegado acceso específicamente al usuario , utilice los argumentos apropiados chmodpara corregir las ACL.

Spiff
fuente
El bit de ejecución está configurado para todos esos directorios, pero no sé cómo verificar si a un usuario específico se le ha denegado el acceso.
waiwai933
Para eso está la "e" en "ls -lde". Enumera las ACL (si las hay) para cada uno de los archivos.
Spiff
2
Cambiar los permisos en / Users / myusername a chmod 755 solucionó el problema para mí.
Mark
¿Este comando no le da permiso al usuario _www para acceder a su directorio raíz, así como al directorio / Users, etc.? Eso no puede ser correcto, ¿verdad? ¿Todos esos agujeros de seguridad para compartir una página en una carpeta? ¿Está este comportamiento documentado en alguna parte?
Tom Lianza
En respuesta a mi propio comentario, encontré esta respuesta ( serverfault.com/a/293063/14970 ) que proporciona un enlace a documentación confiable sobre este comportamiento: wiki.apache.org/httpd/13PermissionDenied
Tom Lianza
5

Como referencia, acabo de tratar esto, y ninguna de las respuestas aquí funcionó en mi caso específico. Estaba configurando hosts virtuales, pero lo más importante, necesitaba que mis archivos htaccess funcionaran realmente.

Cambié en "AllowOverride None" a "AllowOverride All" en mi archivo /etc/apache2/users/USERNAME.conf, y todos mis sitios comenzaron a estar prohibidos.

Lo cambié de nuevo y luego lo cambié solo para un sitio en mi archivo httpd-vhosts.conf, y solo ese sitio estaba prohibido.

Después de mirar los registros y ver que el problema estaba en la reescritura de URL y la falta de FollowSymLinks, volví al archivo USERNAME.conf. Cambié "AllowOverride None" a "AllowOverride All" y agregué "Opciones + FollowSymLinks" en la siguiente línea.

Las cosas comenzaron a funcionar. Vengo de usar xampp en Windows y tenía muchas de estas configuraciones ya establecidas en todo el servidor para tontos como yo.

Jake
fuente
1
muchas gracias, pasé bastante tiempo averiguando qué está pasando, no tuve que jugar con Apache / PHP por algún tiempo ahora
Misha Reyzlin
1
Sí, Options +FollowSymLinksfuncionó como un encanto.
agarie
2

Tuve el mismo problema: mi cuenta (antigua) no era accesible, pero la cuenta de otro usuario que se creó después de actualizar a Lion funcionó bien.

Después de asegurarse de que su /etc/apache2/users/USERNAME.conf se ve así:

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

hacer una raíz sudo chown: rueda /etc/apache2/users/USERNAME.conf

parece que esta configuración de permisos no se establece durante la actualización del sistema operativo, y el usuario de Apache no puede leer el archivo de configuración y arroja un error.

Al menos esto me lo resolvió.

Arve Nygård
fuente
1
Y tal vez correr sudo apachectl restartdespués de eso.
Arjan
Esto funciona para mí ejecutando 10.7.5. La ruta del directorio no apuntaba a mi raíz web local, una vez que actualicé y reinicié apache, todo funcionó. Lo extraño es que el camino ha sido incorrecto durante más de un año y estuvo funcionando todo el tiempo. Acabo de recibir el error hoy de la nada.
supajb
2

actualización para Lion en 10/2011 También tuve que agregar

UserDir habilitado para que mi /etc/apache2/extra/httpd-userdir.conf sea así:

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>
nunya
fuente
1

Conversación continua de los comentarios iniciales de las preguntas: revise su /etc/apache2/httpd.confarchivo. En mi máquina, tengo esto:

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

Sospecho que el tuyo está comentado. Recuerdo vagamente haber cambiado esto a mano al pasar de 10.5 a 10.6 y el valor predeterminado cambió.

Esto probablemente sea obvio, pero tendrá que usarlo sudopara editar el archivo porque será propiedad de root.

Michael H.
fuente
1
No, el mío se ve exactamente como el tuyo.
waiwai933
1

Mi caso es XAMPP + Mac OS X 10.7 + Directorio en la carpeta de Dropbox (referencias cruzadas a mi otra pregunta en Stack Overflow)

403 Access Forbidden es informado por Apache, por lo tanto, seguí el comentario anterior para cambiar el usuario en /XAMPP/xamppfiles/etc/httpd.conf, de, User nobodya User my_user_name. Reinicia Apache y funciona bien.

Rapaz
fuente
0

Probablemente no tenga los índices activados. Si no lo hace, deberá crear un archivo de índice ( index.htmlo index.php) o especificar el archivo explícitamente, es decir http://localhost/~me/mypage.html.

Josh K
fuente
Lo siento, solo para verificar, debería visitar localhost / ~ myusername / index.html y tener un archivo llamado index.html en mi carpeta de Sitios, ¿verdad? Si es así, entonces el 403 todavía está sucediendo.
waiwai933
No deberías estar de visita ~myusername, creo. http://localhost/debe apuntar a /Users/youruser/Sites/.
Josh K