Apache Umgebung mit php/fcgid vervollständigen

Nachdem nun ein Basissystem mit getrennten PHP Nutzerrechten wie im vorherigen Beitrag beschrieben aufgebaut ist, kommen wir nun zur erweiterten Konfiguration. Der Nutzer benötigt Zugriff per FTP, er braucht phpMyAdmin, Webmailer und weitere Standardprogramme.

Erst einmal geben wir dem Nutzer Zugriff auf sein Webverzeichnis. Dazu mounten wir einfach das Domainverzeichnis lokal in das Nutzerverzeichnis 😉

mkdir /home/USER/DOMAIN
echo "/var/www/DOMAIN /home/USER/DOMAIN rw,auto,bind 0 0" >> /etc/fstab
mount -a

Dann bauen wir die Möglichkeiten von PHP durch Installation von MySQL, und einigen sinnvollen PHP Erweiterungen aus. Gleich anbei den Suhosin Patch zur besseren Absicherung, und PEAR-DB, da viele Anwendungen diese nutzen.

apt-get install mysql-server mysql-client php5-mysql php5-imap php5-gd \
   php5-memcache php5-suhosin php-db

Damit sollte die PHP Umgebung für die meisten Fälle einsatzbereit sein, und der Nutzer kann per FTP (bei welchem er auf /home/USERNAME/ beschränkt sein sollte) seine Webseite verwalten.

Konfiguration phpMyAdmin

Damit nicht jeder Nutzer auf dem Server seine eigene Version von phpMyAdmin (vielleicht sogar veraltete mit bekannten Sicherheitslücken) installiert, installieren wir diesen zentral für alle. damit wird dieser auch gleich automatisch über die Systemupdates mitgepflegt.

apt-get install phpmyadmin

Bei der Frage, welche HTTP Server automatisch für den phpMyAdmin konfiguriert werden sollen, wählen wir nichts, das machen wir ja selber. Da diese Programme nicht in den erlaubten Pfaden der open_basedir Einstellungen für die jeweiligen Nutzer liegen, benötigen wir dafür einen eigenen php-starter. Diesen legen wir wieder im Domainverzeichnis des Nutzers, und verweisen darin auf eine extra php.ini Datei:

#!/bin/sh
PHPRC="/var/www/DOMAIN/conf/phpmadmin/"
export PHPRC
export TMPDIR=/var/www/DOMAIN/tmp
exec /usr/bin/php5-cgi

Natürlich erhält auch diese Datei wieder die korrekten Rechte, sowie das immutable Bit.

mkdir /var/www/DOMAIN/conf/phpmyadmin
chmod 750 /var/www/DOMAIN/conf/phpmyadmin/php-starter
chattr +i -V /var/www/DOMAIN/conf/phpmyadmin/php-starter
chown USER GROUP /var/www/DOMAIN/conf/phpmyadmin -R
cp /etc/php5/cgi/php.ini /var/www/DOMAIN/conf/phpmyadmin/

Im Verzeichnis /var/www/DOMAIN/conf/phpmyadmin/ kopieren wir nun die Datei /etc/php5/cgi/php.ini, und machen einige Anpassungen am Inhalt.

open_basedir = /usr/share/phpmyadmin:/usr/share/php:/var/www/DOMAIN/tmp:/etc/phpmyadmin
upload_tmp_dir = /var/www/DOMAIN/tmp
session.save_path = /var/www/DOMAIN/tmp

und natürlich danach nicht die Rechte und das immutable Bit vergessen! Als Letztes dann noch auf die Schnelle eine Subdomain dafür angelegt, und schon ist der phpMyAdmin fertig 😉

<VirtualHost *>
        ServerName phpmyadmin.DOMAIN
        DocumentRoot /usr/share/phpmyadmin/
        AddHandler fcgid-script .php
        LogLevel warn
        ErrorLog /var/www/DOMAIN/logs/error.log
        CustomLog /var/www/DOMAIN/logs/access.log combined
        <Directory /usr/share/phpmyadmin/>
                Options -Indexes FollowSymLinks MultiViews +ExecCGI
                AllowOverride All
                Order allow,deny
                allow from all
                FCGIWrapper /var/www/DOMAIN/conf/phpmyadmin/php-starter .php
        </Directory>
        SuexecUserGroup USER GROUP
</VirtualHost>

Konfiguration Squirrelmail & Co.

Für Squirrelmail erfolgt die Konfiguration äquivalent, nur, dass dabei die open_basedir auf „/usr/share/squirrelmail:/usr/share/php:/var/lib/squirrelmail:/etc/squirrelmail“ gesetzt werden muss und das DocumentRoot des vhost auf /ush/share/squirrelmail/ zeigt.

Antwort auf Apache Umgebung mit php/fcgid vervollständigen

  1. Tomtom sagt:

    open_basedir wird ignoriert ebenso alle anderen Direktiven. FCGI ist daher mit Vorsicht zu genießen per Default haben ALLE User auf ALLES Zugriff

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.