Instalei o Apache com FastCGI (mod_fastcgi), suExec e PHP na minha caixa de desenvolvimento local. Funcionando perfeitamente, exceto uma coisa.
Digamos que eu tenha dois usuários:
user1 - /home/user1/public_html
user2 - /home/user2/public_html
Descobri uma séria falha de segurança em minha configuração: posso incluir um arquivo da raiz da web do usuário2 no arquivo do usuário1. Como prevenir? Alguma dica?
php-cgi
o processo está sendo executado sob o usuário correto.
Responder1
Eu sugiro que você defina base_path
dentro do seu VirtualHost:
php_admin_value open_basedir /usr/local/www/sixeightzero
Responder2
Se o objetivo é rodar o php sob o nome dos usuários, para separá-los então tenteapache2-mpm-itk, é muito mais fácil de implantar do que o fast-cgi e funciona muito bem.
Para usar você precisa apenas adicionar esta linha à configuração do virtualhost:
AssignUserId someuser somegroup
Você também pode definir MaxClientsVHost e NiceValue, se desejar.
Responder3
A única maneira de fazer isso direito é proibir um usuário de ler arquivos do homedir de outro usuário, mas deixando-os legíveis para o servidor web.
Você pode fazer isso (exemplo):
monte o sistema de arquivos com opções acl:
mount -o acl /dev/sda /home
Permitir que o servidor web acesse:
setfacl -m u:nobody:r-x /home/user1
setfacl -m u:nobody:r-x /home/user2
Permitir que o proprietário leia:
setfacl -m u:user1:r-x /home/user1
setfacl -m u:user2:r-x /home/user2