Server-Konfiguration · 2 min read · Jan 29, 2026

Vhosts unter separaten UIDs/GIDs mit Apache2 mpm-itk auf Debian Etch ausführen

Vhosts unter separaten UIDs/GIDs mit Apache2 mpm-itk auf Debian Etch ausführen

Version 1.0
Autor: Falko Timme

Dieser Artikel erklärt, wie Sie apache2-mpm-itk auf einem Debian Etch-Server installieren und konfigurieren können. apache2-mpm-itk ist ein MPM (Multi-Processing Module) für den Apache 2-Webserver. mpm-itk ermöglicht es Ihnen, jeden Ihrer Vhosts unter einer separaten UID und GID auszuführen - kurz gesagt, die Skripte und Konfigurationsdateien für einen Vhost müssen nicht mehr für alle anderen Vhosts lesbar sein. mpm-itk funktioniert mit mod_php, da mpm-itk auf dem traditionellen prefork MPM basiert, was bedeutet, dass es nicht-threaded ist. Das bedeutet, dass Sie suExec oder suPHP nicht mehr verwenden müssen, um die PHP-Skripte einer Website als separaten Benutzer auszuführen.

Dieses Dokument kommt ohne jegliche Gewährleistung! Ich gebe keine Garantie, dass dies für Sie funktioniert!

1 Vorbemerkung

Ich gehe davon aus, dass Sie eine funktionierende Apache2-Installation mit mod_php auf Ihrem Debian Etch-Server haben.

Aus Geschwindigkeitsgründen werfen Sie einen Blick auf http://blog.stuartherbert.com/php/2008/04/19/using-mpm-itk-to-secure-a-shared-server/.

Aus Sicherheitsgründen besuchen Sie bitte http://mpm-itk.sesse.net/.

2 Installation von apache2-mpm-itk

apache2-mpm-itk ist als Debian-Paket für Debian Etch verfügbar, sodass wir nur Folgendes ausführen müssen:

apt-get install apache2-mpm-itk

3 Konfiguration von apache2-mpm-itk

apache2-mpm-itk wird auf Vhost-Basis konfiguriert, d.h. wir müssen keine globalen Optionen festlegen, und es gibt nur eine Direktive, die wir in einem Vhost festlegen müssen, AssignUserId, die zwei Parameter benötigt, den Benutzernamen und die Gruppe, unter der der Vhost ausgeführt wird.

In diesem Beispiel werde ich den Standard-Debian-Apache-Vhost verwenden (Sie finden seine Konfiguration in /etc/apache2/sites-available/default) mit dem Document Root /var/www (wenn Sie unterschiedliche Vhosts haben, passen Sie dies bitte an Ihre Situation an), und ich möchte, dass dieser Vhost als Benutzer web1_admin und Gruppe web1 ausgeführt wird.

Wenn der Benutzer und die Gruppe noch nicht existieren, können wir sie wie folgt erstellen:

groupadd web1
useradd -s /bin/false -d /home/web1_admin -m -g web1 web1_admin

Dann öffnen wir unsere Vhost-Konfiguration und fügen die folgenden Zeilen hinzu:

| [...] AssignUserId web1_admin web1 [...] |

Zum Beispiel:

vi /etc/apache2/sites-available/default

| NameVirtualHost * ServerAdmin webmaster@localhost DocumentRoot /var/www/ Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all # Diese Direktive erlaubt uns, die Standardstartseite von apache2 # in /apache2-default/ zu haben, aber trotzdem / an den richtigen Ort zu leiten RedirectMatch ^/$ /apache2-default/ ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all ErrorLog /var/log/apache2/error.log # Mögliche Werte sind: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On Alias /doc/ "/usr/share/doc/" Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 AssignUserId web1_admin web1 |

Starten Sie Apache danach neu:

/etc/init.d/apache2 restart    

Das war’s!

4 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.