Configuração de permissões do Unix / linux para hospedagem compartilhada com o Apache

1

Estou no processo de configurar um servidor a partir de uma instalação limpa do CentOS 5. Qual é a melhor estrutura de permissões (usuários, grupos, permissões unix) para executar uma única instância do apache para vários usuários? Idealmente, deve satisfazer estes requisitos:

  • Os sites de cada usuário são armazenados em um subdiretório de seu diretório pessoal. Os usuários podem editar arquivos e permissões.
  • O Apache pode ler os sites de todos os usuários.
  • Nenhum usuário pode ler os arquivos de sites de outros usuários.

Pergunta bônus: como adicionar PHP e / ou Perl e / ou Ruby ao Apache sem permitir que nenhum usuário acesse os arquivos de outro usuário?

    
por weiyin 16.01.2011 / 00:54

1 resposta

4

Foi o que eu fiz:

  1. chown user_name: www-data website_dir
  2. chmod g + s endereço_do_site # faz com que novos arquivos / diretórios contidos neste catálogo sejam de propriedade do usuário www-data (usuário padrão do servidor web Debian)
  3. Então qualquer arquivo criado pelo usuário que seja legível por grupo pode ser acessado pelo servidor web, e o usuário pode fazer chmod g + w se quiser que o diretório / arquivo também seja gravável pelo servidor web (como configs / upload etc)

A desvantagem é que o usuário www-data executa todos os scripts para que o usuário possa obter outros dados do usuário usando php / ruby / perl / o que for executado no servidor da Web.

O próximo passo seria usar algo como mod_suphp ou mod_suexec para executar scripts de usuário com privilégios daquele usuário.

    
por 16.01.2011 / 01:37