Phpmyadmin und suphp ausführen

7

Ich habe einen Debian Lenny Webserver. Es läuft Apache2 mit libapache2-mod-suphp. Leider macht suphp die Verwendung von phpmyadmin unmöglich, da phpmyadmin in / usr / share / phpmyadmin installiert ist und sich im Besitz von root befindet und suphp die Engine in diesem Verzeichnis deaktiviert:

$ 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>

Gibt es eine Möglichkeit, das System phpmyadmin (möglicherweise über Standard-libapache2-mod-php5) zu aktivieren, während suphp verwendet wird? Wie?

thor
quelle

Antworten:

11

In /etc/apache2/mods-available/suphp.conf folgen zwei Zeilen:

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

sollte geändert werden zu:

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

Dann in der Zeile /etc/suphp/suphp.conf

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

sollte geändert werden zu:

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

Dann sollte der Inhalt von /etc/apache2/mods-available/php5.conf geändert werden von:

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

zu:

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

Auf diese Weise wird allen PHP-Skripten der Typ x-httpd-suphp zugewiesen, der von suphp verarbeitet wird. Da suphp für Dateien in / usr / share deaktiviert ist, erhalten PHP-Skripte in php5.conf für dieses Verzeichnis den Typ x-httpd-php und werden von mod_php5 verarbeitet. Auf diese Weise behalten Sie suphp für alle anderen Skripte außer den vom System installierten in / usr / share bei.

thor
quelle
Gute Antwort und besser als einige der komplizierteren Lösungen, die bei Google auftauchen, wenn Sie phpmyadmin in einem vhost ausführen usw. Vielen Dank, thor.
Zlovelady
1
Der Autor von suPHP gibt an, dass das gleichzeitige Ausführen von mod_php und suphp zu gefährlich ist. Es ermöglicht einem Angreifer, die Dateien eines Zielbenutzers zu ändern. Wenn Sie sicher sind, dass es unmöglich ist, suPHP in / usr / share aufzurufen, und mod_php nicht außerhalb von / usr / share aufgerufen werden kann, ist diese Konfiguration meiner Meinung nach sicher. Andernfalls haben Sie eine Sicherheitslücke in Ihrem Server erstellt. Referenz: seclists.org/bugtraq/2004/Aug/att-320/suphp-advisory.txt
MV.
@ MV. Wie hast du es zum Laufen gebracht? Ich bin am 12.04, habe / usr / share / phpmyadmin zu docroot in /etc/suphp/suphp.conf hinzugefügt und die Engine in der Apache-Konfiguration eingeschaltet. Ich verliere mich in den Berechtigungen zum Festlegen der Dateien und einem möglichen Ubuntu-Fehler, bei dem die Datei config.inc.php nicht gelesen wird, damit ich das Geheimnis des Blowfishs festlegen kann (ja, ich habe das Geheimnis in / var / lib gefunden, nachdem ich stundenlang im Kreis gegoogelt habe ). Haben Sie irgendwo im Web einen Blog-Beitrag oder Tipps? Prost!
Steve
3

Die Konfigurationsdateien haben sich seit dem Zeitpunkt der ursprünglichen Antwort geändert.

Diese Dateien müssen nicht mehr geändert werden:

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

Diese Datei:

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

benötigt nur den <Directory /usr/share>Wrapper um die aktuelle Datei.

z.B:

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

== Aktuelle Kopien der Dateien für ==

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>
Michael
quelle
0

fwiw auf ubuntu 12.04 habe ich folgende schritte gemacht: hinzugefügt

:/usr/share/phpmyadmin

bis zum Ende von docroot in /etc/suphp/suphp.conf

hinzugefügt

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

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

hat einen neuen virtuellen Host erstellt

<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>

tat

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

was es meistens zum Laufen bringt.

Ich konnte nicht herausfinden, wie ich die Fehlermeldung entfernen kann, in der nach einem blowfish_secret gefragt wird. Ubuntu streut die Konfigurationsdateien über mehrere Verzeichnisse und deren /etc/phpmyadmin/apache.conf

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

Ich bin nicht bereit, alle diese Pfade zur suphp-Docroot hinzuzufügen, und pma erkennt /usr/share/phpmyadmin/config.inc.php nicht

Steve
quelle