Cómo permitir el acceso a un enlace simbólico en mi ~ / Sitios / para Apache en Mac OS X Lion 10.7.2

12

Necesito permitir el acceso a un directorio vinculado por sym dentro de ~ / Sites desde mi Apache. Enlace simbólico los directorios como este

ln -s ~/path/to/the/source/directory/ ~/Sites/source-link-here

Ahora, cada vez que abro una solicitud GET, recibo una respuesta 403

curl http://localhost/~username/source-link-here/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /~username/source-link-here
on this server.</p>
...

¿Cómo puedo decirle a Apache que permita el acceso al directorio de enlaces simbólicos y cómo le digo a Apache que permita esto solo para solicitudes disparadas desde localhost?

Cualquier ayuda es muy apreciada.

Atentamente

robertj

robertj
fuente

Respuestas:

10

Aquí hay una publicación de blog que escribí cuando intentaba descubrir cómo hacer exactamente lo que está tratando de hacer.

  1. Habilite el uso compartido web en el MAC yendo a Preferencias del sistema -> Compartir -> Marque Habilitar uso compartido web
  2. Edite su archivo username.conf ubicado en / private / etc / apache2 / users y agregue la directiva "FollowSymLinks":

    <Directorio "/ Usuarios / yourUserName / Sites /">
        Opciones Índices MultiViews FollowSymLinks
        AllowOverride None
        Orden permitir, negar
        Permitir de todos
    </Directory>
    
  3. Edite el archivo /private/etc/apache2/httpd.conf y asegúrese de que la línea bajo "# hosts virtuales" no esté comentada, así:

    Incluir /private/etc/apache2/extra/httpd-vhosts.conf
    
  4. Edite el archivo /private/etc/apache2/extra/httpd-vhosts.conf y agregue:

    <VirtualHost *: 80>  
        <Directorio /Usuarios/suNombreUsuario/Sitios/MiWebSite.com>
            Opciones + FollowSymlinks + SymLinksIfOwnerMatch
            Permitir anular todo
        </Directory>
      DocumentRoot / Users / yourUserName / Sites / MyWebSite
      ServerName MyWebSite.local
    </VirtualHost>
    
  5. Edite el archivo / etc / hosts y agréguelo en la parte superior:

    127.0.0.1 MyWebSite.local
    
  6. Haga un enlace simbólico para vincular su directorio de código a uno en el directorio de sitios.

    ln -s ~ / Code / MyWebSite ~ / Sites / MyWebSite
    
  7. Reiniciar apache

kelsmj
fuente
1
¡Bienvenido a Super User! Sería bueno incluir aquí las partes esenciales de la respuesta y proporcionar el enlace solo para referencia futura.
slhck
Pasé del entorno xampp zend a la configuración predeterminada de mac / apache y después de un reinicio estaba muerto en el agua. El paso 2 fue clave. ¡Gracias!
Shanimal
2

De hecho, solo los primeros 2 pasos de la respuesta de Emjay más un reinicio de apache son necesarios, esto es lo que funcionó para mí:

  1. Habilite el uso compartido web en el MAC yendo a Preferencias del sistema -> Compartir -> Marque Compartir web habilitado

  2. Edite su username.confarchivo ubicado en /private/etc/apache2/usersy agregue la directiva FollowSymLinks :

    <Directory "/Users/yourUserName/Sites/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    
  3. verifique su configuración de apache

    sudo apachectl -t

  4. reiniciar apache

    sudo apachectl restart

Ahora Apache servirá los enlaces simbólicos en su Sitesdirectorio.

espinielli
fuente
1

Estaba recibiendo un 403 forbiddenerror. En qué resolvió mi problema httpd-vhosts.conf, reemplacé la siguiente configuración

<Location "/modulename">
  Order allow,deny
  Allow from all
</Location>

con

<Location "/modulename">
  Require all granted
</Location>

Hizo lo mismo para todas las etiquetas de ubicación. Resolvió el problema del permiso.

VINUTHA
fuente
0

Options FollowSymLinks en httpd.conf para el contenedor apropiado

  1. Encuentra la cadena DocumentRoot en conf, recuerda su valor. Verifique el contenido de la <Directory "docroot here">...</Directory>sección para la cadena de Opciones. Si faltan opciones, agregue una cadena Options FollowSymLinks, si existe pero no tiene FollowSymLinks, agregue este parámetro para tener algo parecido Options Indexes FollowSymLinks. Reinicie Apache después de modificar la configuración. Resultado de la prueba, escríbelo aquí

  2. Leer documentos de Apache

Tejón perezoso
fuente
Hola, lo siento. Esta respuesta no ayuda en absoluto.
robertj 01 de
¿Intentaste hacerlo ? deshabilitó FollowSymLinks en la configuración de Apache, debe habilitarlo a nivel del sitio o del directorio para poder usar recursos enlazados por enlaces simbólicos
Lazy Badger
y verifique los permisos para los archivos dentro de ~, la presencia del archivo DirectoryIndex después de esto: resuelva la tarea secuencialmente, verificando todas las posibilidades
Lazy Badger
1
de nuevo: no puedo hacer nada con sus comentarios. Soy totalmente nuevo en cuanto a Apache (aparte de buscar en Google durante las últimas 6 horas), simplemente no tengo idea de cuál es el contenedor apropiado . Lo que sería realmente útil es un ejemplo concreto de cómo configurar httpd.conf y httpd-vhost.conf.
robertj 01 de
@robertj: esta es la solución a su problema. Debe editar ese archivo y modificarlo en consecuencia, como dijo @Lazy_Badger. Debe ubicarse debajo <Directory /usr/share/web>. Tenga en cuenta que después, debe reiniciar Apache usandosudo /usr/sbin/apachectl restart
Steven Lu
0

A veces sucede si:

  • Su carpeta de origen está en un sistema de archivos NTFS
  • Si está utilizando una carpeta ya creada, que tiene permisos diferentes, probablemente de un propietario o instalación anterior.

Resolví este problema creando una nueva carpeta en un sistema de archivos ext4 y creando un enlace simbólico a /var/www.

Aleksandr Leteckij
fuente
¿Cómo es esto relevante para el OP usando OSX?
JoshP