Como faço uma configuração de hospedagem compartilhada com vhosts dinâmicos?

1

Estamos criando uma espécie de configuração de servidor Web de hospedagem compartilhada, mas tudo é gerenciado por um aplicativo da web em ourdomain.com, que tem um usuário padrão do apache (www-data) para acessar os arquivos de todos.

Todo mundo tem um user_name e seu web_root é [some_root_folder] / [user_name]

Estamos criando hosts virtuais dinâmicos usando

link

como

[some_root_folder]/[user_name] user_name.ourdomain.com

nós fazemos

chown 770 user_name:www-data -R [some_root_folder]/[user_name]

Não desejamos criar vhosts separados, porque isso requer o recarregamento do apache em cada inscrição (eu pedirei sua opinião sobre a criação de vhosts separados usando o mpm-itk em outra entrada).

Pergunta

Se user_michael for executado:

<?php echo file_get_contents(‘../user_george/index.php’); ?> em user_michael.ourdomain.com/index.php

Michael consegue ler os arquivos do George porque os dois diretórios pertencem ao grupo de usuários do www-data (caso contrário, o nosso aplicativo da web não pode modificá-los)

Então: como o www-data pode modificar os arquivos de Michael e George, mas eles não podem modificar os outros, considerando a configuração acima?

    
por Devrim 08.09.2009 / 19:45

2 respostas

2

Quando você executa file_get_contents, o usuário que está lendo o arquivo ../user_george/index.php é o mesmo que o servidor web (www-data) e não o proprietário do arquivo.

O PHP Safe Mode é uma solução para esse problema, mas está obsoleto. Eu recomendo verificar esta série para soluções sobre segurança em hospedagem compartilhada.

    
por 08.09.2009 / 20:20
2

Reiniciar o Apache após cada inscrição provavelmente não é um problema. Veja reinício fácil .

Para o seu problema de permissão, se você só precisa de php e não quer rodar CGI, você pode querer olhar em PHP Modo Seguro . Está obsoleto, não da melhor maneira, mas é fácil de usar.
Outra maneira é usar o suPHP para executar o script php como user_name em vez dos usuários do apache.

    
por 08.09.2009 / 20:16