7 votes

Exécuter phpmyadmin et suphp

J'ai un serveur web Debian Lenny. Il fonctionne avec apache2 et libapache2-mod-suphp. Malheureusement, suphp rend impossible l'utilisation de phpmyadmin, car phpmyadmin est installé dans /usr/share/phpmyadmin et appartient à root, et suphp désactive son moteur dans cette direction :

$ cat /etc/apache2/mods-enabled/suphp.conf 
<IfModule mod_suphp.c>
    AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
    suPHP_AddHandler application/x-httpd-php
    <Directory />
        suPHP_Engine on
    </Directory>

    # By default, disable suPHP for debian packaged web applications as files
    # are owned by root and cannot be executed by suPHP because of min_uid.
    <Directory /usr/share>
        suPHP_Engine off
    </Directory>
</IfModule>

Existe-t-il une possibilité d'activer le système phpmyadmin (peut-être via la libapache2-mod-php5 standard) tout en utilisant suphp ? Comment ?

11voto

Henric Edwards Points 838

Dans /etc/apache2/mods-available/suphp.conf les deux lignes suivantes :

AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-php

devrait être changé en :

AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-suphp

Ensuite, dans la ligne /etc/suphp/suphp.conf

application/x-httpd-php=php:/usr/bin/php-cgi

devrait être changé en :

application/x-httpd-suphp=php:/usr/bin/php-cgi

Ensuite, le contenu de /etc/apache2/mods-available/php5.conf doit être modifié de :

<IfModule mod_php5.c>
  AddType application/x-httpd-php .php .phtml .php3
  AddType application/x-httpd-php-source .phps
</IfModule>

à :

<Directory /usr/share>
    <IfModule mod_php5.c>
      AddType application/x-httpd-php .php .phtml .php3
      AddType application/x-httpd-php-source .phps
    </IfModule>
</Directory>

De cette façon, tous les scripts php se voient attribuer le type x-httpd-suphp qui est géré par suphp. Comme suphp est désactivé pour les fichiers dans /usr/share, dans php5.conf pour ce répertoire php scripts obtiennent le type de x-httpd-php et sont gérés par mod_php5. De cette façon, vous conservez suphp pour tous les autres scripts sauf ceux installés par le système dans /usr/share.

0 votes

Bonne réponse, et meilleure que certaines des solutions plus alambiquées qui apparaissent sur Google, impliquant l'exécution de phpmyadmin dans un serveur virtuel, etc. Merci Thor.

1 votes

L'auteur de suPHP déclare que l'exécution de mod_php et de suphp en même temps est trop dangereuse. Cela permet à un attaquant distant de modifier les fichiers d'un utilisateur ciblé. Si vous êtes sûr qu'il est impossible que suPHP soit invoqué dans /usr/share et que mod_php ne puisse être invoqué en dehors de /usr/share, alors je pense que cette configuration est sûre. Sinon, vous avez créé une faille de sécurité dans votre serveur. Référence : seclists.org/bugtraq/2004/Aug/att-320/suphp-advisory.txt

0 votes

@MV. Comment avez-vous réussi à le faire fonctionner ? Je suis sur 12.04, j'ai ajouté /usr/share/phpmyadmin au docroot dans /etc/suphp/suphp.conf et j'ai activé le moteur dans la configuration d'apache. Je suis perdu dans les permissions à définir pour les fichiers, et un bug possible d'ubuntu avec le fait qu'il ne lit pas le config.inc.php pour que je puisse définir le secret blowfish (oui, j'ai trouvé celui dans /var/lib après avoir tourné en rond pendant des heures). Avez-vous un article de blog ou des conseils quelque part sur le web ? Merci !

3voto

Michael Points 151

Les fichiers de configuration ont été modifiés depuis la réponse initiale.

Ces fichiers n'ont plus besoin d'être modifiés :

/etc/apache2/mods-available/suphp.conf
/etc/suphp/suphp.conf

Ce dossier :

/etc/apache2/mods-available/php5.conf 

n'a besoin que de la <Directory /usr/share> autour du fichier courant.

Par exemple :

<Directory /usr/share>
  {original php5.conf contents}
</Directory>

\== Copies actuelles des fichiers pour ==

NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
Linux anon 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

root@local [~]# cat /etc/apache2/mods-available/suphp.conf

<IfModule mod_suphp.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-suphp
    </FilesMatch>
        suPHP_AddHandler application/x-httpd-suphp

    <Directory />
        suPHP_Engine on
    </Directory>

    # By default, disable suPHP for debian packaged web applications as files
    # are owned by root and cannot be executed by suPHP because of min_uid.
    <Directory /usr/share>
        suPHP_Engine off
    </Directory>

# # Use a specific php config file (a dir which contains a php.ini file)
#       suPHP_ConfigPath /etc/php5/cgi/suphp/
        suPHP_ConfigPath /etc/php5/apache2
# # Tells mod_suphp NOT to handle requests with the type <mime-type>.
#       suPHP_RemoveHandler <mime-type>
</IfModule>

root@local [~]# cat /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=/var/www:${HOME}/public_html

;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=true

;Send minor error messages to browser
errors_to_browser=false

;PATH environment variable
env_path="/bin:/usr/bin"

;Umask to set, specify in octal notation
umask=0077

; Minimum UID
min_uid=100

; Minimum GID
min_gid=100

[handlers]
;Handler for php-scripts
application/x-httpd-suphp="php:/usr/bin/php-cgi"

;Handler for CGI-scripts
x-suphp-cgi="execute:!self"

root@local [~]# cat /etc/apache2/mods-available/php5.conf

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
    SetHandler application/x-httpd-php-source
    # Deny access to raw php sources by default
    # To re-enable it's recommended to enable access to the files
    # only in specific virtual host or directory
    Order Deny,Allow
    Deny from all
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
    Order Deny,Allow
    Deny from all
</FilesMatch>

# Running PHP scripts in user directories is disabled by default
#
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

0voto

Steve Points 101

Sur ubuntu 12.04, j'ai suivi les étapes suivantes : j'ai ajouté

:/usr/share/phpmyadmin

à la fin de docroot dans /etc/suphp/suphp.conf

ajouté

<Directory /usr/share/phpmyadmin>
    suPHP_Engine on
</Directory>

dans /etc/apache2/mods-enabled/suphp.conf

création d'un nouvel hôte virtuel

<VirtualHost *:80>
  ServerName phpmyadmin.example.com
  DocumentRoot /usr/share/phpmyadmin
  DirectoryIndex index.php
  <Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
  </Directory>
  <directory /usr/share/phpmyadmin/setup>
    Order Deny,Allow
    Deny from All
  </directory>
  <directory /usr/share/phpmyadmin/libraries>
    Order Deny,Allow
    Deny from All
  </directory>
</VirtualHost>

a fait

chown pmauser:pmauser /usr/share/phpmyadmin
chown pmauser:pmauser /usr/share/phpmyadmin/*.php
chmod og-r /usr/share/phpmyamdin
chmod og-r /usr/share/phpmyamdin/*.php

ce qui lui permet de fonctionner en grande partie.

Je n'ai pas réussi à trouver le moyen de me débarrasser du message d'erreur demandant un blowfish_secret. Ubuntu disperse les fichiers de configuration à travers plusieurs répertoires et leur /etc/phpmyadmin/apache.conf a

php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/

je ne suis pas prêt à ajouter tous ces chemins au docroot de suphp, et pma ne reconnaît pas /usr/share/phpmyadmin/config.inc.php

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X