suPHP – Ou comment éxecuter des scripts PHP avec des droits restreint

Afin d’ins­tal­ler suPHP vous devez déjà dis­po­ser d’Apa­che sur votre ser­veur

Remarque sur l’uti­li­sa­tion :

Il faut à pré­sent défi­nir les droits des fichiers de vos sites pour que cha­cun devienne indé­pen­dant. Exem­ple pour un uti­li­sa­teur fic­tif « toto » ayant accès uni­que­ment à tous les sous-dos­siers à par­tir de /toto :

chown -R toto:toto /var/www/domaine_1/sous_dossier

Par ailleurs, il faut savoir deux cho­ses sur l’uti­li­sa­tion de suPHP :

1. Le dos­sier con­te­nant les fichiers d’un uti­li­sa­teur doit éga­le­ment appar­te­nir à cet uti­li­sa­teur. C’est à dire que /sous_dos­sier doit appar­te­nir à toto pour que celui-ci puisse exé­cu­ter les fichiers dans le dos­sier.
2. Les autres dos­siers parents doi­vent obli­ga­toi­re­ment appar­te­nir à l’uti­li­sa­teur root:root, Dans notre exem­ple /var/www/domaine_1 doit appar­te­nir à root:root sous peine d’obte­nir une erreur 500 dans votre navi­ga­teur

NB il peux être inté­res­sant de défi­nir ça dans /etc/skel qui est le sque­lette des réper­toire uti­li­sa­teur.

Configuration du module mod_suphp.c :

vi /etc/apache2/mods-available/suphp.conf
<IfModule mod_suphp.c>
 AddType application/x-httpd-php .php .phtml .php3 .php4 .php5
 AddType application/x-httpd-php-source .phps
 AddHandler x-httpd-php .php .php3 .php4 .php5
 <Location />
 SuPHP_AddHandler x-httpd-php
 </Location>
 suPHP_ConfigPath /etc/php5/cgi
 suPHP_Engine on
 </IfModule>
a2enmod suphp

a2enmod suphp ermet d’activer le module Apache, qui n’est autre qu’un lien symbolique (ln -s /etc/apache2/mods-available/suphp.conf /etc/apache2/mods-enabled/)

La configuration de suPHP :

vi /etc/suphp/suphp.conf
[global]
 ;Path to logfile
 logfile=/var/log/suphp/suphp.log
;Loglevel
 loglevel=info
;User Apache is running as
 webserver_user=www-data
;Path all scripts have to be in
 docroot=/
;Path to chroot() to before executing script
 ;chroot=/mychroot
; Security options
 allow_file_group_writeable=false
 allow_file_others_writeable=false
 allow_directory_group_writeable=false
 allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
 check_vhost_docroot=false
;Send minor error messages to browser
 errors_to_browser=true
;PATH environment variable
 env_path=/bin:/usr/bin:/usr/sbin:/sbin
;Umask to set, specify in octal notation
 umask=022
; Minimum UID
 ; sur debian Apache (www-data) à l’uid 33
 min_uid=33
; Minimum GID
 min_gid=33
[handlers]
 ;Handler for php-scripts
 x-httpd-php=php:/usr/bin/php5-cgi
;Handler for CGI-scripts
 x-suphp-cgi=execute:!self