O uso de suexec e suphp impõe um tipo diferente de separação de privilégios que o padrão.
O padrão é separar a permissão do usuário do servidor da web. Ou seja, o usuário é o proprietário dos arquivos e ele precisa conceder ao servidor da Web permissão para visualizá-los e alterá-los.
O modelo suexec / suphp é que o servidor da Web (ao executar scripts) é executado na conta do usuário, portanto, o site tem permissão para fazer qualquer coisa que o usuário tenha permissão para fazer. Até certo ponto, isso remove a separação entre o usuário e o servidor, mas em troca impõe uma separação DIFERENTE: isto é, entre o site de um usuário e o site de um usuário diferente na mesma caixa.
Por padrão, o PHP sempre roda sob a conta de usuário do Apache, então os scripts PHP de um site podem acessar quaisquer arquivos que os scripts PHP de outro site possam. Portanto, se uma conta no servidor for invadida, a infecção poderá se espalhar para as outras. SuPHP impede isso.
Nem o suexec nem o suphp afetarão o modo como o apache exibe conteúdo estático . Todas as regras antigas ainda se aplicam. Em vez disso, suexec e suphp mudam a conta sob a qual o CGI e o PHP (respectivamente) serão executados. O Suexec faz com que o executável CGI seja executado sob a conta do proprietário, enquanto o SuPHP faz com que os scripts PHP sejam executados sob a conta do proprietário.
Suexec e SuPHP não são necessariamente melhores . Eles são apenas diferentes . Eles não impedirão que um site seja hackeado (e possivelmente tornarão o site mais fácil para hackear), mas impedirão que um comprometimento em um site se espalhe para todos os outros. Para o administrador do site, esse isolamento é sem dúvida mais importante, e é por isso que alguns sistemas de hospedagem compartilhada tornam o suexec e sufiram o padrão.
Uma "pegadinha" extremamente comum é que o SuPHP verifica a propriedade e as permissões de um script antes de ser executado e retornará um erro 500 se as permissões não forem apropriadas.
Em particular:
- O proprietário e o grupo do arquivo devem corresponder ao proprietário do website (conforme definido na configuração do apache)
- O arquivo não deve ser mundialmente gravável
- O diretório pai não deve ser mundialmente gravável