Apache: ¿No es suficiente chmod 755 para configurar un enlace simbólico o un alias en Apache httpd en Mac OS 10.5?


15

En mi máquina Mac OS 10.5, me gustaría configurar una subcarpeta de ~/Documentslike ~/Documents/foo/htmlpara ser http: // localhost / foo .

Lo primero que pensé hacer es usar Alias ​​de la siguiente manera:

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

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

    Order allow,deny
    Allow from all
</Directory>

Esto me prohibió 403. En el error_log obtuve:

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

La subcarpeta en cuestión tiene acceso a chmod 755. Intenté especificar gustos como http: //localhost/foo/test.php , pero tampoco funcionó. Luego, probé la ruta del enlace simbólico.

Entró /Library/WebServer/Documentse hizo un enlace simbólico a ~/Documents/foo/html. La raíz del documento tiene

Options Indexes FollowSymLinks MultiViews

Esto todavía me tiene prohibido 403:

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

¿Qué más necesito para configurar esto?

Solución :

$ chmod 755 ~/Documents

En general, el wwwusuario del servicio debe poder ver la carpeta que se va a compartir y toda su carpeta ancestral .


Muchas gracias por publicar esta solución, esto realmente me ayudó después de pasar años buscando la respuesta
Tomba

@Tomba No hay problema.
Eugene Yokota

Respuestas:


24

Apuesto a que algún directorio por encima del que desea acceder no tiene permisos para permitir que Apache lo atraviese. Conviértase en el usuario con el que Apache se está ejecutando ( sudo -i -u apacheo lo que sea), luego intente cambiar al directorio de interés y lséste. Si no puede (como se esperaba), intente acceder a los directorios que se encuentran arriba, uno por uno, hasta que uno le permita entrar. El subdirectorio de eso es aquel que necesita tener o+xconfigurado. Enjabonar, enjuagar, repetir según sea necesario.


1
Sí, si 'Sitios' funciona, probablemente tenga un problema correcto en Documentos, si 'Sitios' no funciona, probablemente tenga un problema correcto en su directorio de usuarios (esto puede agregarse con filevault)
radio

1
~ / Documentos fue 700.
Eugene Yokota

Si ejecuto sudo -i -u _wwwen OS X (dado que el usuario de Apache está _www en la configuración predeterminada de apache en OS X), entonces lo hago whoami, todavía obtengo mi nombre de usuario, no _www
Jason S

Para cambiar completamente a otro usuario con sudo, uso '-' por sí mismo: sudo - www-data(para Ubuntu).
Alexis Wilke

2

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

Según httpd.apache.org/docs/2.0/en/mod/core.html#options , "si todas las opciones de la directiva Opciones están precedidas por un símbolo + o -, las opciones se fusionan". ¿Cómo va a ayudar eso ~ / Documentos siendo 700?
Eugene Yokota

AFAIK FollowSymLinks no habilita la opción, solo permite que se habilite en un nivel inferior de la jerarquía de directorios.
Dave Cheney

1
Esta fue la respuesta correcta para mí. Modifiqué el archivo conf en / etc / apache2 / users, y permití FollowSymLinks (sin el +). Recuerda reiniciar.
superluminario

1

Verifique para asegurarse de que la bóveda de archivos no esté habilitada. Yo tuve el mismo problema. Intenté todo lo que pude encontrar. Nada funcionó. Pero después de una hora de tratar de resolver esto, recordé que tenía habilitado el depósito de archivos.

Deshabilitarlo resolvió el problema.


1

Verifique la propiedad del enlace simbólico. Como estás en Mac OS X, los propietarios de enlaces simbólicos pueden cambiarse. En /Library/WebServer/Documentshacerls -l

Si ~/Documents/foo/htmlse llama a su enlace simbólico fooy tiene permisos como

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

Luego, de manera predeterminada en OS X, Apache se ejecuta como el usuario _www y el grupo _www, por lo que en el caso mencionado anteriormente no podrá atravesar el enlace simbólico a ~/Documents/foo/html

Ejecutar man 8 chownen su terminal del sistema, o mirar en línea chown hombre

Verá que el uso de la -hopción cambiará la propiedad del enlace simbólico en sí mismo, en lugar del archivo al que apunta (es la fuente). Entonces puedes hacer algo como

sudo chown -h :_www foo 

Esto cambiará el enlace sim a

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

y el grupo Apache _www podrá atravesar el enlace.


0

Verifique su directorio / Users (ls -l / Users) para ver los derechos de su usuario (alguien).
¿También está correctamente disponible el directorio 'Sitios' en localhost / ~ someone?


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.