Por que o Apache diz que "arquivo não existe" com esse alias de diretório?

1

Estou configurando um pequeno servidor da web. Estou tendo problemas com o Apache não sendo capaz de encontrar o alias. Meu DocumentRoot é / var / www / htdocs, mas eu tenho alguns arquivos em uma partição diferente (maior) em / home / user / Documents / a_directory / CurrentCaptures que eu quero poder ver no site.

Meu /var/www/conf/httpd.conf tem 2 aliases como segue:

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons/">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

# Added by me
Alias /CurrentCaptures "/home/user/Documents/a_directory/CurrentCaptures"

<Directory "/home/user/Documents/a_directory/CurrentCaptures">
    Options Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Eu deixei o alias /icons/ para testá-lo e, se vou para http://localhost/icons/ em um navegador, funciona. Mas quando tento ir em http://localhost/CurrentCaptures/ , recebo um erro 404 Not Found.

Em / var / www / logs / error_log, recebo este erro:

[seg 04 de agosto 11:02:30 2014] [erro] [cliente 192.168.10.100] Arquivo não existe: / home / user / Documents / a_directory / CurrentCaptures /

Alguma idéia?

    
por ac0xr 04.08.2014 / 19:15

1 resposta

0

O processo do Apache provavelmente não tem permissão para entrar em / home / user.

O Apache normalmente é executado como um usuário sem privilégios (comumente chamado de "http", "httpd" ou "www-data", mas existem variações). Esse usuário não tem permissão para entrar no diretório inicial de outro usuário.

Se você não estiver preocupado com segurança, a maneira mais fácil de contornar isso é adicionar permissão de execução mundial nos diretórios (algo como o modo 0711) e permissão de leitura mundial (0644) em os arquivos que você deseja disponibilizar para o servidor da web. Em um diretório, "executar" significa descer e "ler" significa listar os arquivos no diretório. Assim, ao conceder permissão de execução, você permite que o servidor da Web leia arquivos conhecidos (sujeitos às permissões do arquivo), mas não enumera o conteúdo do diretório.

Uma solução mais "correta" seria mover os arquivos para uma hierarquia de diretórios que não seja específica do usuário. Você poderia fazer isso, por exemplo, movendo os arquivos para algum outro local (fora do diretório home de um usuário específico) ou usando montagens de ligação. As permissões de arquivo ainda estariam em vigor, portanto, os arquivos precisariam ser legíveis para o servidor da Web, mas você não precisaria conceder ao servidor da Web qualquer acesso ao seu diretório inicial.

    
por 04.08.2014 / 19:22