Host virtual Apache configurado com um link simbólico para uma pasta em meu diretório de usuário falha com 403 Forbidden

Host virtual Apache configurado com um link simbólico para uma pasta em meu diretório de usuário falha com 403 Forbidden

Tenho certeza de que alguém já perguntou/respondeu isso antes, mas minha pesquisa não me ajudou muito...

Eu tenho o Eclipse IDE instalado em minha caixa Linux (LM13) com a pasta 'workspace' localizada em @ /home/user/projects/workspace

Eu tenho o Apache instalado e configurado, trabalhando com vários vhosts, todos com suas pastas em algum lugar sob a raiz da web/var/www/...

O problema que estou tendo é que o vhost que configurei para um projeto no meu Eclipse Workspace não pode ser acessado pelo Apache, e por isso me dá o "403 - Proibido - Você não tem permissão para acessar/ligar este servidor."

Primeiro tentei uma configuração vhost 'normal', depois tentei usar um SymLink no web-root @ /var/www/freelance/projectvinculado à pasta do projeto no espaço de trabalho do Eclipse

Eu tentei ambos FollowSymLinkse SymLinksIfOwnerMatchpara a diretiva de opções na <directory ...>seção, mas ainda não consigo acessá-la com o Apache no meu navegador!

Alguém pode me explicar como posso fazer essa configuração funcionar, por favor? Ainda não tentei usar mod_userdirou definir as permissões de arquivo em minha /homepasta para permitir acesso ao Apache, pois nenhuma delas parecia favorável. Existe outra maneira?

Aqui está minha configuração do 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>


Atualizar

Saída de ls -alFd ~/Projects/workspace/iagd: -

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

Saída para o mesmo em /home/user: -

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

Responder1

Você precisará adicionar uma diretiva Directory para o subdiretório do seu diretório inicial. Quando o Apache acessa um link simbólico, é o diretório real para o qual o link simbólico aponta que será acessado, não o ponteiro do link simbólico.

Então, há duas coisas que você precisa:

Em primeiro lugar, as permissões do sistema operacional. Seu diretório precisa ser legível para o usuário Apache, o que significa que todos os diretórios na hierarquia acima dele precisam ter o bit de execução definido para o usuário Apache.

Em segundo lugar, a configuração do Apache. O Apache precisa ser informado de que não há problema em ler nesse diretório. Normalmente, você desejará restringir o Apache para que apenas possa ler uma hierarquia de diretórios limitada - caso contrário, seria possível para qualquer usuário da web, por exemplo, ver seu arquivo de senha ou navegar pelos diretórios pessoais de todos. Então, quando você quiser acessar um diretório que está fora da hierarquia webroot, você precisa adicionar uma diretiva informando ao Apache para permitir isso. Vai parecer algo assim:

# 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>

informação relacionada