Configuração insegura do Apache + mod_userdir

Configuração insegura do Apache + mod_userdir

DR:Como posso ativar o mod_userdir de forma segura? (ou seja: cada usuário deve ser capaz de criar e servir seu conteúdo em ~/public_html mas não deve ter permissão para ler o conteúdo uns dos outros nem diretamente - cat /home/userX/public_html/file- nem através de funções PHP ( file_get_contents('/home/userX/public_html/file'))

Detalhes: Eu configurei o Apache com mod_userdir para oferecer aos meus usuários a opção de servir seu conteúdo, descartando arquivos em sua pasta ~/public_html. Para proteger o acesso aos arquivos e evitar que qualquer usuário possa ler os arquivos de outras pessoas, configurei as seguintes permissões:

/home/userA user.user drwx--x--x (711)  
/home/userA/public_html  user.user drwxrwx--x  (771)

Eu adicionei www-dataao grupo de cada usuário: usermod -a -G user www-data (também poderia funcionar criando um grupo e adicionando todos os usuários, incluindo www-dataele)

Toda a configuração funciona conforme o esperado. Qualquer usuário pode acessar seu conteúdo em https://server/~user e não pode ler os arquivos de outros:

userA@ubuntu:/home$ cat userB/public_html/index.php 
cat: userB/public_html/index.php: Permission denied

Até agora tudo bem. Mas o problema é que, como o Apache está rodando como www-datae tem acesso de grupo a qualquer arquivo dentro de /home/*, qualquer usuário pode criar um arquivo PHP para ler o conteúdo de outras pessoas usando funções como exec, system, file_get_contents, etc.

Eu sei que posso desabilitar a execução de tais funções, adicionando-as ao disable_functionsbloco, php.inimas vejo isso como um patch, não uma solução. Portanto, parece-me que deveria haver outra maneira mais segura de definir essa configuração do Apache habilitada para userdir. Procurei uma maneira de fazer isso corretamente, mas não encontrei uma solução adequada.

informação relacionada