suPHP: uso apropriado do recurso chroot

1

Comecei a usar o suPHP recentemente e estou gastando uma quantidade incrível de tempo depurando as configurações e diferentes opções de compilação para obter algo que realmente funciona . Eu tentei entrar em contato com a equipe de desenvolvimento através de sua lista de discussão, mas é obviamente feito de fantasmas ...

Estou tentando usar o parâmetro chroot , mas ele aciona um erro interno 500, que não consigo resolver.

Estou usando o DBD MySQL para a definição do DocumentRoot:

<VirtualHost *:80>
    ServerName *

    DBDriver mysql
    DBDParams <params>
    DBDocRoot "SELECT document_root FROM domains WHERE name=%s" HOSTNAME

    suPHP_Engine on
    AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
    suPHP_AddHandler application/x-httpd-php
</VirtualHost>

Uma vez que o VirtualHost tenha definido o DocumentRoot, o suPHP deve aplicar um chroot adicional. Veja a seção relevante do meu /etc/suphp.conf abaixo:

docroot=${HOME}
chroot=${HOME}

allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false
check_vhost_docroot=false

Os parâmetros chroot não poderiam ser mais simples, mas o suPHP cospe:

Caused by SystemException in API_Linux.cpp:465: chdir() failed: No such file or directory

... quando faço uma solicitação para um script PHP. O suphp log não contém nenhuma informação, esta linha vem do log de erros do Apache.

Alguém na Terra sabe como configurar esse horrível recurso chroot? Já passei por inúmeros fóruns e e-mails da listagem, mas ninguém deu uma resposta adequada (mesmo que esse recurso tenha sido corrigido por um número inacreditável de vezes). Ou talvez eu deva mudar para o suExec, esperando que ele ofereça resultados mais satisfatórios ...?

    
por John WH Smith 17.07.2014 / 18:41

1 resposta

0

Seu problema é causado pelo fato de você não entender como o chroot funciona. Uma vez que você chroot em / home / user, essa é a nova raiz e os caminhos são "relativos" a ela. Portanto, se você tiver seus arquivos em / home / user / public_html e quiser fazer chroot para / home / user, o chdir deve ser / public_html e a raiz do documento fastcgi deve ser a mesma (/ public_html).

É tecnicamente impossível para o suPHP executar o chroot em um ponto mais distante no caminho do processo.

    
por 17.07.2014 / 19:32