por que os arquivos precisam ser legíveis pelo mundo para que o Apache os armazene.

1

por que os arquivos precisam ser legíveis pelo mundo para o Apache para servi-los?

Eu acho que se eles forem de propriedade, compre o usuário ou grupo do Apache. E os arquivos são legíveis e executáveis, permitindo que o Apache armazene os arquivos.

Como a solicitação para o Apache é tratada? Eles recebem um usuário convidado ou ninguém, ou o Apache é o proprietário dos pedidos.

Qualquer documentação, além da básica como alterar grupos de usuários e permissão, seria boa. Meu problema não é alterar a permissão, mas entender como as solicitações são tratadas e por que os arquivos precisam ser legíveis em todo o mundo.

    
por nelaaro 02.12.2011 / 15:01

3 respostas

3

Esta não é uma questão sobre o Apache e como ele lê o arquivo, mas a administração geral do * NIX e o uso do chmod.

Arquivos / diretórios em sistemas * nix possuem um proprietário e um grupo associado a ele (chown). Eles também têm bits de segurança anexados a eles, o que define os seguintes atributos:

  • As permissões do proprietário
  • As permissões do grupo
  • As permissões de todos os outros

Se o Apache não tiver permissões em uma dessas categorias, ele não poderá ler o arquivo.

Veja os seguintes artigos da wikipedia sobre chmod e chown:

link

link

    
por 02.12.2011 / 15:09
2

As solicitações do Apache são tratadas por um processo em execução sob o UID e o GID definidos nas diretivas User e Group no httpd.conf. As mesmas regras de permissão que se aplicam aos processos do usuário se aplicam aos processos do Apache.

Portanto, se os arquivos que estão sendo atendidos pelo Apache não são de propriedade ou legíveis pelo UID (ou GID) no qual o Apache está sendo executado, o acesso é negado, a menos que o bit legível esteja definido. Se os arquivos pertencerem e forem legíveis pelo UID (ou GID) no qual o Apache está sendo executado, o bit legível não precisa ser definido. Além disso, o UID do Apache (ou GID) deve ter permissões de execução para todos os diretórios pai dos arquivos que estão sendo atendidos.

Uma exceção a isso são os scripts CGI que são executados no módulo suEXEC do Apache, caso em que o processo é executado sob o UID e GID do programa que está sendo executado. Neste caso, os programas CGI não precisam ser legíveis para o mundo, eles só precisam ser legíveis e executáveis pelo usuário.

    
por 02.12.2011 / 15:22
1

Eles não precisam ser. É o suficiente se o usuário do apache tiver acesso de leitura.

O nome do usuário pode variar. Na família RedHat é "apache", no Ubuntu é "www-data".

Verifique sua lista de processos e veja com qual usuário o apache é executado. Além disso, verifique seu arquivo httpd.conf e veja as diretivas para Usuário e Grupo.

    
por 02.12.2011 / 15:25