Apache: acesso negado porque faltam permissões de pesquisa

50

Eu sei que esta pergunta é feita muito, mas as soluções que vi não funcionaram para mim.

Eu só tenho um host virtual ativado e estou tentando ativar o acesso a uma pasta que não está nas raízes do documento

ServerAdmin [email protected]
DocumentRoot /var/www/html

Alias /movies /home/username/Videos/Movies

<Directory /home/username/Videos/Movies/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Eu defino /etc/apache2/envvars da seguinte forma

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=public

Assegurei-me de que / home / username / Videos / e seus subfloders são de propriedade de username:public , defina as permissões para 777 (depois que 775 não funcionaram) e tenha certeza de que o usuário www-data pertence ao grupo public .

Agora, quando eu digito localhost/movies , obtenho

[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path

Mas quando eu defino /etc/apache2/envvars para executar o Apache em username (meu próprio nome de usuário), tudo funciona bem. O problema está relacionado à permissão, mas não vejo como, no meu caso, especialmente quando defino as permissões para 777 . Alguma idéia?

P.S. A versão do Ubuntu é 14.04, o Apache é o 2.4.7 e eu não editei outros arquivos de configuração.

    
por Yotam 21.04.2014 / 10:53

5 respostas

61

Desculpe, parece que você ainda não encontrou uma resposta. Eu apenas tropecei nesta página. Eu encontrei o mesmo erro. Estou adicionando essa resposta para ajudar a qualquer outra pessoa.

Faça um chmod +x no seu diretório de usuário e reinicie o apache. Permissões 755 devem funcionar. Eu tive problemas com 644 . Espero que isso ajude você em seu próprio caso.

    
por Peter 30.07.2014 / 14:01
18

Se, no caso do selinux, é o problema, em vez de desativá-lo, esta página e esta página fornece o comando para conceder acesso:

chcon -R -t httpd_sys_content_t ~/public_html/
    
por jozxyqk 12.01.2016 / 11:53
16

Você pode ter o selinux ativado. Experimente

getenforce

Se mostrar "Imposição", tente

setenforce 0

e tente se isso corrigir seu problema.

    
por Soprano 28.02.2015 / 21:33
8

Eu encontrei o mesmo problema, depois de horas tentando, eu encontrei uma solução exatamente resolve o problema:

link

Basicamente, o servidor Apache não requer apenas permissões de leitura de todos os arquivos que ele serve, mas a permissão de execução de todos os diretórios no caminho do seu host virtual.

O nome do utilitário pode ser usado para ajudar a encontrar problemas de permissões, listando as permissões ao longo de cada componente do caminho:

namei -m /usr/local/apache2/htdocs/foo/bar.html

No meu caso, um diretório no meu caminho tem a permissão 700, causa o problema. Depois de alterá-lo para 701, o problema foi resolvido.

    
por Lu Sun 21.02.2016 / 07:39
0

Eu estava tendo esse problema quando estava tentando executar o apache em um contêiner docker em um host Ubuntu 16.04 que estava usando o kernel 4.4 em vez de 4.10.

Depois de executar este comando no host e reimplantá-lo, fiquei bem:

sudo apt-get install --install-recommends linux-generic-hwe-16.04 
    
por Programster 28.08.2017 / 23:39