Como dar acesso ao usuário para o diretório specifig?

0

Eu fiz o symlink quando logado como www (usuário do apache):

ln -s /home/anotheruser/test /var/www/test

Agora vou para o meu mydomain.com/test e obtenho um erro 403.

/home/anotheruser/ tem permissões 764 (grupo leitura + gravação e leitura pública) otheruser e www estão no mesmo grupo.

Então, quais permissões devo dar para a pasta /home/anotheruser para que isso funcione?

    
por SomeUser 20.04.2013 / 21:14

3 respostas

1

Certifique-se de ter o Apache configurado para seguir os Links Simbólicos

Exemplo de configuração:

<VirtualHost *:80>
    ServerAdmin [email protected]

    DocumentRoot /var/www/test
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
<VirtualHost>
    
por 21.04.2013 / 10:11
0

Esse erro HTTP pode não ser relacionado ao sistema de arquivos, você pode optar por listar todos os arquivos normalmente:

   <VirtualHost *:80>
     ...
     <Directory>
       Options +Indexes
     </Directory>   
     ...
   </VirtualHost>

Faria o truque, senão você pode tentar acessar um arquivo diretamente a partir desse diretório, se não houver configurações de segurança, como chroot ou algo assim.

    
por 23.04.2013 / 13:51
0

Esta resposta é um pouco longa, mas acho que o contexto é importante aqui, então, por favor, tenha paciência comigo.

Razão para o problema

Quando você está usando um symlink, o que você está dizendo é essencialmente "ao invés de procurar aqui (/ var / www / test), você deve olhar para aquele diretório (/ home / anotheruser / test)". Para que isso funcione ao servir arquivos da web, você precisa de duas coisas:

  • o usuário que o apache executa deve ter permissão para ler esse diretório - essa parte já está correta com a ajuda dos outros
  • O
  • apache deve ser configurado para permitir que ele veicule arquivos desse diretório - e essa é a parte que está faltando.

Para dar um exemplo: o arquivo / etc / passwd é legível para todos. Ainda assim, você provavelmente não o deseja legível para o mundo inteiro - portanto, mesmo que você fizesse um link simbólico ( ln -s /etc/passwd /var/www/test/passwd ), ele ainda não seria legível a menos que você informe especificamente ao apache que ele é permitido em / etc .

Como corrigir isso

Você precisa mover os arquivos para um diretório do qual o apache é permitido para as páginas do servidor, ou você precisa permitir que o apache atenda páginas do diretório onde os arquivos moram.

Solução 1 - mover arquivos

A solução mais rápida é ligar o symlink - crie o diretório /var/www/test , torne o outro usuário o proprietário e faça ln -s /var/www/test /home/anotheruser/ . Dessa forma, todos os arquivos são armazenados em /var/www , portanto, o apache tem permissão para atendê-los.

Solução 2 - permitir diretório

Adicione uma diretiva ao httpd.conf para permitir que o apache exiba o conteúdo de /home/anotheruser/test . Em seguida, basta remover o link simbólico e configurar um alias. Assim:

Alias /test /home/anotheruser/test

<Directory /home/anotheruser/test>
    Order allow,deny
    Allow from all
</Directory>
    
por 24.04.2013 / 11:50