Apache2 + suPHP

Plesk, Confixx, Froxlor, SysCP, SeCoTo, IspCP, etc.
Post Reply
acepilot
Posts: 86
Joined: 2003-07-30 17:42
Contact:
 

Apache2 + suPHP

Post by acepilot »

Hallo zusammen,

Bei dem versuch meine Confixxinstallation mit suPHP zu versehen trete ich momentan auf der Stelle und hoffe Ihr könnt mir den richten Fingerzeig geben, damit ich mein Problem gelößt bekomme.
Die Scripte der Benutzer werden nämlich einfach nicht mit suPHP ausgeführt sondern laufen weiterhin mit den Rechten des Apache Servers.

Auf dem Server läuft Suse 10.3 mit Confix 3.3.5. Um suPHP verwenden zu können, mußte ich dies erst kompilieren, da für Suse kein passendes RPM mitgeliefert wird. Kompiliert habe ich das aktuelle suphp in der Versin 0.7.1 mit folgendem Befehl.

Code: Select all

./configure --with-min-uid=30 --with-min-gid=30 --with-apache-user=wwwrun --with-php=/svr/www/cgi-bin/php5 --with-logfile=/var/log/apache/suphp.log --with-apxs=/usr/sbin/apxs2  --with-apr=/usr/bin/apr-1-config --prefix=/usr


Das hat alles super geklappt, und auch das make sowie make install liefen super durch. Weiterhin habe ich dann die suphp.conf im etc Verzeichniss abgelegt. Dieses file hat folgenden Inhalt.

Code: Select all

[global]
;Path to logfile
logfile=/var/log/suphp.log

;Loglevel
loglevel=info

;User Apache is running as
webserver_user=wwwrun

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

;Send minor error messages to browser
errors_to_browser=true

;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
x-httpd-php=php:/srv/www/cgi-bin/php5

;Handler for CGI-scripts
x-suphp-cgi="execute:!self"
Letztendlich das Apache Modul suphp geladen und über die admin.pl Confixx mitgeteilt das nun bitte auch suPHP vorhanden ist. Nach kurzer zeit hat Confixx auch die Vhosts Dateien geändert. In diesen steht nun auch das er die suPHP Engine einschalten soll.

Code: Select all

<Directory "/home/www/web6/html">
  Options -FollowSymLinks -SymLinksIfOwnerMatch
  <IfModule mod_access.c>
    Allow from all
  </IfModule>
  <IfModule mod_authz_host.c>
    Allow from all
  </IfModule>
  suPHP_engine on
</Directory>

<VirtualHost xxx.xxx.xxx.xxx:80>
  ServerName nordseewoge.xxx.de
  ServerAlias www.nordseewoge.xxx.de web6.c024.cyan.xxx.de
  DocumentRoot /home/www/web6/html
  SuexecUserGroup web6 web6
  ScriptAlias /cgi-bin/ /home/www/web6/html/cgi-bin/
  suPHP_ConfigPath /etc/apache2/confixx_phpini/web6
</VirtualHost>

<VirtualHost xxx.xxx.xxx.xxx:443>
  ServerName web6.xxx.de
  DocumentRoot /home/www/web6/html
  SuexecUserGroup web6 web6
  ScriptAlias /cgi-bin/ /home/www/web6/html/cgi-bin/
  suPHP_ConfigPath /etc/apache2/confixx_phpini/web6
  <IfModule mod_ssl.c>
    SSLEngine on
    SSLCertificateKeyFile /etc/apache2/ssl.key/admin.key
    SSLCertificateFile /etc/apache2/ssl.crt/admin.crt
    SetEnvIf User-Agent ".*MSIE.*" 
      nokeepalive ssl-unclean-shutdown 
      downgrade-1.0 force-response-1.0
    <Files ~ ".(cgi|shtml|phtml|php3?)$">
      SSLOptions +StdEnvVars
    </Files>
    <Directory "/home/www/web6/html/cgi-bin">
      SSLOptions +StdEnvVars
    </Directory>
  </IfModule>
</VirtualHost>
Anschließend den APache neugestartet und das ganze ausprobiert. Leider ohne Erfolg. Die ausführung der Dateien läuft immer unter wwwrun. Probiere nun seid heute Mittag das ganze zum laufen zu bekommen und sehe wahrscheinlich den Wald vor lauter Bäumen nicht. Ein Logfile von suPHP wurde bis jetzt nicht angelegt und auch die anderen Logfiles sehen unauffällig aus.

Wie gesagt, währe nett wenn jemand einen Tipp hätte.

Gruß,
Markus
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: Apache2 + suPHP

Post by Roger Wilco »

Dir fehlen noch die entsprechenden Handler. Lies dazu http://suphp.org/DocumentationView.html ... he/INSTALL.

Code: Select all

AddHandler x-httpd-php   .php
SuPHP_AddHandler x-httpd-php
acepilot
Posts: 86
Joined: 2003-07-30 17:42
Contact:
 

Re: Apache2 + suPHP

Post by acepilot »

Sorry hatte vergessen genau diesen file noch mit zum Post zu packen.

Code: Select all

c024:/etc/apache2/conf.d # cat suphp.conf
<IfModule mod_suphp.c>
  <Directory "/srv/www">
    suPHP_Engine on
    AddHandler x-httpd-php .php .php3 .php4 .php5 .phtml
    suPHP_AddHandler x-httpd-php
    DirectoryIndex index.php index.php3 index.php4 index.php5
  </Directory>
</IfModule>
Das sollte doch den Handler laden, aber ich denke gerade drüber nach ob die vhosts Datei stimmt. Sollte dort nicht die ausführung durch das normale php Modul mit dem Befehl php_admin_flag engine off deaktiviert werden :-k ?
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53
 

Re: Apache2 + suPHP

Post by Roger Wilco »

Wenn mod_php noch eingebunden ist, solltest du das deaktivieren.

Ansonsten wie immer: Logs...
acepilot
Posts: 86
Joined: 2003-07-30 17:42
Contact:
 

Re: Apache2 + suPHP

Post by acepilot »

So nach langem hin und her bin ich der Lösung ein gutes Stück näher gerückt. Damit ich soweit gekommen bin habe ich nochmals suPHP neu kompiliert. Diesmal mit einem weiteren Parameter --sysconfdir=/etc. Danach nochmals alles kontrolliert und die vhost von Hand bearbeitet. Hinzugefügt habe ich php_admin_flag engine off sowie den <Location /> Teil.

Ergebniss ist das die Skripte unter dem richtigen User ausgeführt werden. Jetzt steh ich nur auf den Schlauch, wie ich dem dämlichen Confixx beibringe die beiden Flags automatisch in die Vhost zu schreiben. Die httpd Spezial Option hat mir bisher nicht geholfen, denn die trägt anscheinend auch nicht alles ein. Gibt es irgendwo ein Template auf das Confixx selber zurückgreift?

Code: Select all

<Directory "/home/www/web5/html">
  Options -FollowSymLinks -SymLinksIfOwnerMatch
  <IfModule mod_access.c>
    Allow from all
  </IfModule>
  <IfModule mod_authz_host.c>
    Allow from all
  </IfModule>
  php_admin_flag engine off
  suPHP_engine on
</Directory>

<VirtualHost XXX.XXX.XXX.XXX:80>
  ServerName oechsner.XXX.de
  ServerAlias autoundholz.de www.oechsner.XXX.de www.XXX.de web5.XXX.de
  DocumentRoot /home/www/web5/html
  SuexecUserGroup web5 web5
  ScriptAlias /cgi-bin/ /home/www/web5/html/cgi-bin/
  suPHP_ConfigPath /etc/apache2/confixx_phpini/web5/1
  suPHP_UserGroup web5 web5

<Location />
   suPHP_AddHandler application/x-httpd-php
</Location>

</VirtualHost>

<VirtualHost XXX.XXX.XXX.XXX:443>
  ServerName web5.XXX.de
  DocumentRoot /home/www/web5/html
  SuexecUserGroup web5 web5
  ScriptAlias /cgi-bin/ /home/www/web5/html/cgi-bin/
  suPHP_ConfigPath /etc/apache2/confixx_phpini/web5/2
  suPHP_UserGroup web5 web5
  <IfModule mod_ssl.c>
    SSLEngine on
    SSLCertificateKeyFile /etc/apache2/ssl.key/admin.key
    SSLCertificateFile /etc/apache2/ssl.crt/admin.crt
    SetEnvIf User-Agent ".*MSIE.*" 
      nokeepalive ssl-unclean-shutdown 
      downgrade-1.0 force-response-1.0
    <Files ~ ".(cgi|shtml|phtml|php3?)$">
      SSLOptions +StdEnvVars
    </Files>
    <Directory "/home/www/web5/html/cgi-bin">
      SSLOptions +StdEnvVars
    </Directory>
  </IfModule>

<Location />
   suPHP_AddHandler application/x-httpd-php
</Location>

</VirtualHost>
EdRoxter
Posts: 483
Joined: 2006-01-06 03:23
Location: Neben Bonn
 

Re: Apache2 + suPHP

Post by EdRoxter »

Nein, Confixx generiert alles um die Sachen herum, die du in httpd Spezial angegeben hast, aus seinen Einstellungen. Was du in der Confixx-Konfiguration nicht ändern kannst, kannst du mit Confixx leider gar nicht ändern.

Prinzipiell solltest du aber einfach nur mod_php komplett aus dem Apachen rausschmeißen, sprich, Modul, .load-Kram und ggf. Konfigurationen, die damit zusammenhängen. Dann brauchst du die mod_php-Engine auch nicht mehr explizit zu deaktivieren.
acepilot
Posts: 86
Joined: 2003-07-30 17:42
Contact:
 

Re: Apache2 + suPHP

Post by acepilot »

Das wäre vielleicht eine Möglichkeit gewesen. Aber die vorgegebenen httpd_spezial Einträge sind trotzdem nicht sehr umfassend. Habe allerdings eine Möglichkeit gefunden diese per Hand zu erweitern, so dass jetzt alles automatisch generiert wird. Wenn man sich nämlich in die confixx Datenbank einlogt, gibt es 2 Tabellen (httpd_states & httpd_definitions). Wenn man diese erweitert werden weitere Einträge direkt in der Confixx Oberfläche angezeigt, und mann kann bequem alles konfigurieren ;o).

gruß,
markus
EdRoxter
Posts: 483
Joined: 2006-01-06 03:23
Location: Neben Bonn
 

Re: Apache2 + suPHP

Post by EdRoxter »

httpd Spezial macht man sowieso im "Advanced Mode" und per Hand. ;)

Aber gut zu wissen.
acepilot
Posts: 86
Joined: 2003-07-30 17:42
Contact:
 

Re: Apache2 + suPHP

Post by acepilot »

EdRoxter wrote:httpd Spezial macht man sowieso im "Advanced Mode" und per Hand. ;)

Aber gut zu wissen.
Ja da hast du im Prinzip schon recht. Wenn es aber um die Basiseinstellungen geht, finde ich es wesentlich einfacher das mit ein paar zusätzlichen Checkboxen zu machen. Was mir gerade noch einfällt, wenn du bzw. ihr beieinem Kunden über httpd Spezial einige Einträge geändert habt, und diesen menüpunkt erneut anwählt, werden dann bei euch die Einträge angezeigt? Bei mirwerden die Änderungen zwar korrekt übernommen aber das Feld advanced ist immer leer. So fällt die Kontrolle welche Einträge ein Kunde schon hat, über Confixx weg und man muß wieder direkt per SSH in die entsprechenden Files schauen.

Gruß,
Markus
EdRoxter
Posts: 483
Joined: 2006-01-06 03:23
Location: Neben Bonn
 

Re: Apache2 + suPHP

Post by EdRoxter »

Kann ich so nicht nachvollziehen. Confixx ist in der Hinsicht aber ein wenig wie Windows: Im Zweifelsfall einfach mal das Update auf die gerade aktuelle Version runterladen (auch wenn sie bei dir schon läuft) und nochmal drüberbügeln. Hat bei mir bisher in 90% solcher unerklärbaren Probleme geholfen.
Post Reply