SuPHP: utilisation correcte de la fonction chroot

J'ai commencé à utiliser suPHP récemment, et je passe une énorme quantité de time à déboguer les configurations et les différentes options de compilation pour get quelque chose qui fonctionne réellement . J'ai essayé de contacter l'équipe de développement via leur list de diffusion, mais c'est évidemment des fantômes …

J'essaie d'utiliser le paramètre chroot , mais il triggers une erreur interne de 500 que je ne peux pas résoudre.

J'utilise DBD MySQL pour la définition 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> 

Une fois que VirtualHost a défini le DocumentRoot, suPHP est censé appliquer un chroot supplémentaire. Consultez la section pertinente de mon /etc/suphp.conf ci-dessous:

 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 

Les parameters chroot ne pourraient pas être plus simples, mais suPHP crache:

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

… quand je fais une requête à un script PHP. Le journal suphp ne contient aucune information, cette ligne provient du journal des erreurs d'Apache.

Est- ce que quelqu'un sur Terre en fait maintenant comment configurer cette horrible fonctionnalité chroot? J'ai rencontré d'innombrables forums et mails de la list, mais personne n'a encore donné une réponse appropriée (même si cette fonctionnalité a été corrigée un nombre incroyable de fois). Ou peut-être que je devrais passer à suExec, en espérant qu'il offrira des résultats plus satisfaisants …?

Votre problème est causé par le fait que vous ne comprenez pas comment Chroot fonctionne. Une fois que vous avez chroot dans / home / user, c'est la nouvelle racine et les paths sont "relatifs". Donc, si vous avez vos files dans / home / user / public_html et souhaitez chroot vers / home / user, alors le chdir devrait être / public_html et la racine du document fastcgi serait la même (/ public_html).

Il est techniquement impossible pour le suPHP de courir chroot à un point plus loin dans le path du lancement du process.