El host virtual Apache configurado con un enlace simbólico a una carpeta en mi directorio de usuario falla con 403 Prohibido

El host virtual Apache configurado con un enlace simbólico a una carpeta en mi directorio de usuario falla con 403 Prohibido

Estoy seguro de que alguien ha preguntado/respondido esto antes, pero mi búsqueda no me ha ayudado mucho...

Tengo Eclipse IDE instalado en mi máquina Linux (LM13) con la carpeta 'espacio de trabajo' ubicada en @ /home/user/projects/workspace

Tengo Apache instalado y configurado, trabajando con varios vhosts, todos los cuales tienen sus carpetas en algún lugar debajo de la raíz web./var/www/...

El problema que tengo es que Apache no puede acceder al vhost que configuré para un proyecto en mi espacio de trabajo de Eclipse, por lo que me muestra el mensaje "403 - Prohibido - No tienes permiso para acceder a / en Este servidor."

Primero probé una configuración de vhost "normal", luego intenté usar un SymLink en la raíz web @ /var/www/freelance/projectvinculado a la carpeta del proyecto en el espacio de trabajo de Eclipse.

Probé ambos FollowSymLinksy SymLinksIfOwnerMatchla directiva de opciones en la <directory ...>sección, ¡pero todavía no puedo acceder a ella con Apache en mi navegador!

¿Alguien puede explicarme cómo puedo hacer que esta configuración funcione, por favor? Todavía no he intentado usarlo mod_userdirni configurar los permisos de archivos en mi /homecarpeta para permitir el acceso a Apache, ya que ninguno de estos parecía favorable. ¿Hay otra manera?

Aquí está mi configuración de vhost:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>


Actualizar

Salida de ls -alFd ~/Projects/workspace/iagd: -

    drwxr-xr-- 6 user www-data 4096 Aug 22 14:12 IAGD/

Salida para lo mismo en /home/user: -

    drwx------ 74 user user 20480 Aug 23 07:30 /home/user/

Respuesta1

Deberá agregar una directiva de directorio para el subdirectorio de su directorio de inicio. Cuando Apache accede a un enlace simbólico, se accederá al directorio real al que apunta el enlace simbólico, no al puntero del enlace simbólico.

Entonces, hay dos cosas que necesitas:

En primer lugar, los permisos del sistema operativo. Su directorio debe ser legible para el usuario de Apache, lo que significa que todos los directorios en la jerarquía superior deben tener el bit de ejecución configurado para el usuario de Apache.

En segundo lugar, la configuración de Apache. Es necesario decirle a Apache que puede leer desde ese directorio. Por lo general, querrá restringir a Apache para que solo pueda leer una jerarquía de directorios limitada; de lo contrario, sería posible que cualquier usuario web, por ejemplo, pueda ver su archivo de contraseñas o navegar por los directorios de inicio de todos. Entonces, cuando desee acceder a un directorio que está fuera de la jerarquía webroot, debe agregar una directiva que le indique a Apache que lo permita. Se verá algo como esto:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    <Directory /home/user/projects/workspace>
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>

información relacionada