14 votos

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

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

Lo primero que se me ocurrió hacer es utilizar 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 dio 403 Forbidden. En el error_log tengo:

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

La subcarpeta en cuestión tiene acceso chmod 755. He probado a especificar cosas como http://localhost/foo/test.php pero tampoco funcionó. A continuación, probé la ruta symlink.

Entró en /Library/WebServer/Documents e hice un enlace simbólico a ~/Documents/foo/html . root del documento tiene

Options Indexes FollowSymLinks MultiViews

Esto todavía me tiene 403 Forbidden:

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

¿Qué más necesito para configurarlo?

Solución :

$ chmod 755 ~/Documents

En general, la carpeta que se va a compartir y todas sus carpetas antecesoras deben ser visibles para la aplicación www usuario del servicio.

0 votos

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

0 votos

@Tomba No hay problema.

24voto

Ryan Sampson Puntos 2898

Apuesto a que algún directorio por encima del que quieres acceder no tiene permisos para permitir que Apache lo atraviese. Conviértete en el usuario con el que se está ejecutando Apache ( sudo -i -u apache o lo que sea), a continuación, intente cambiar en el directorio de interés y ls ello. Si no puedes (como es de esperar), entonces intenta entrar en los directorios que están por encima, uno por uno, hasta que uno te deje entrar. El subdirectorio de ese es el que necesita tener o+x set. Hacer espuma, aclarar y repetir según sea necesario.

1 votos

Sí, si 'Sitios' está funcionando, es probable que tenga un problema de derecho en Documentos, si 'Sitios' no está funcionando es probable que tenga un problema de derecho en su directorio de usuario (esto se puede anexar con filevault)

1 votos

~/Documentos era 700.

0 votos

Si ejecuto sudo -i -u _www en OS X (ya que el usuario de Apache es _www en la configuración por defecto de apache en OS X), entonces hago lo siguiente whoami Todavía tengo mi nombre de usuario, no _www

2voto

Dave Cheney Puntos 13302

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

0 votos

Según httpd.apache.org/docs/2.0/es/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 a que ~/Documents sea 700?

0 votos

AFAIK FollowSymLinks no habilita la opción, sólo permite habilitarla en un nivel inferior de la jerarquía de directorios.

1 votos

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

1voto

Darel Puntos 485

Comprueba que el almacén de archivos no está activado. Tuve el mismo problema. Probé todo lo que pude encontrar. Nada funcionaba. Pero después de una hora de intentar resolverlo, recordé que tenía activada la bóveda de archivos.

Al desactivarlo se resolvió el problema.

1voto

Jason S Puntos 111

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

Si su enlace simbólico a ~/Documents/foo/html se llama foo y tiene permisos como

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

Por defecto, en OS X Apache se ejecuta con el usuario _www y el grupo _www, por lo que en el caso mencionado no será capaz de atravesar el enlace simbólico a ~/Documents/foo/html

Ejecutar man 8 chown en el terminal de su sistema, o consúltelo en línea hombre chown

Verá que utilizando la función -h cambiará la propiedad del enlace simbólico en sí, en lugar del archivo al que apunta (su fuente). Entonces puedes hacer algo como

sudo chown -h :_www foo 

Esto cambiará el simlink 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.

0voto

radius Puntos 7838

Compruebe su directorio /Users (ls -l /Users) para ver los derechos de su usuario (alguien).
¿El directorio "Sites" está disponible correctamente en localhost/~someone?

0 votos

localhost/~alguien funciona.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X