O host virtual Apache configurado com um link sym para uma pasta no meu diretório de usuários falha com 403 Forbidden

1

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

Eu tenho o Eclipse IDE instalado na minha caixa de Linux (LM13) com a pasta 'workspace' localizada @ /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 eu configurei para um projeto no meu Eclipse Workspace não pode ser acessado pelo Apache, e então me dá o "403 - Proibido - Você não tem permissão para acesso / neste servidor. "

Primeiro eu tentei uma configuração vhost 'normal', então tentei usar um SymLink sob a raiz da web @ /var/www/freelance/project vinculado à pasta do projeto na área de trabalho do Eclipse

Eu tentei tanto o FollowSymLinks quanto o SymLinksIfOwnerMatch para a diretiva options na seção <directory ...> , mas ainda não consigo acessá-lo com o Apache no meu navegador!

Alguém pode me explicar como posso fazer com que essa configuração funcione, por favor? Eu ainda não tentei usar mod_userdir ou configurar as permissões de arquivo na minha pasta /home para permitir acesso ao Apache, pois nenhuma delas parecia favorável. Existe outro jeito?

Aqui está minha configuração 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/
    
por Chris 23.08.2012 / 13:14

1 resposta

1

Você precisará adicionar uma diretiva de diretório para o subdiretório seu diretório pessoal. 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.

Existem 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 do Apache, o que significa que todos os diretórios na hierarquia acima dele precisam ter o bit de execução configurado para o usuário do Apache.

Em segundo lugar, a configuração do Apache. O Apache precisa ser informado de que não há problema em ler esse diretório. Normalmente, você desejará restringir o Apache para ter permissão apenas para ler uma hierarquia de diretórios limitada - caso contrário, seria possível para qualquer usuário da Web, por exemplo, consiga ver o seu arquivo de senhas ou navegue pelos diretórios pessoais de todos. Então, quando você deseja acessar um diretório que está fora da hierarquia webroot, é necessário adicionar uma diretiva informando ao Apache para permitir isso. Será algo parecido com isto:

# 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>
    
por 23.08.2012 / 16:05