Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

webserver:suexec

Inhaltsverzeichnis

suEXEC

Bei suEXEC handelt es sich um einen Sicherheitsmechanismus des von uns eingesetzten Apache-Webservers.

War es früher üblich, dass CGI- und FastCGI-Scripts mit den Rechten des Webservers (typischerweise apache, wwwrun o.ä.) liefen, so ist dies schon lange nicht mehr zeitgemäß, und zwar einerseits aus Sicherheitsgründen (Übergriffe auf andere Webspaces des gleichen Servers wären trivial möglich), andererseits aber auch aus Praktikabilitätsgründen: Dateien und Verzeichnisse, die über ein Script angelegt wurden, gehörten dann dem Webserver-User (und nicht deinem Systemuser), so dass du selbst dann keine vollen Rechte darauf hattest, und auch umgekehrt konnten Scripts oft nicht in Dateien und Verzeichnisse schreiben, die du mit deinen normalen Userrechten hochgeladen/angelegt hattest.

Dank suEXEC hat dieses Durcheinander ein Ende. Alle Scripts - das gilt übrigens auch für PHP, was bei uns ebenfalls unter FastCGI läuft - laufen mit den Rechten deines Systemusers. Das bedeutet, dass es die traditionellen Rechteprobleme in diesem Punkt bei uns auch grundsätzlich nicht gibt.

Viele Dokumentationen geben in dieser Situation leider den „Rat“, doch einfach globale Schreibrechte zu setzen („mach einfach chmod 777, dann funktioniert es“). Das ist geradezu fahrlässig, weil es eben gerade ermöglicht, dass nicht nur du, sondern möglicherweise auch Dritte Lese- und sogar Schreibrechte auf deinen Dateien erhalten. suEXEC ist daher aus gutem Grund paranoid: Ist ein Script (oder ein Verzeichnis, in dem ein Script liegt) für noch irgendjemand anderen schreibbar, außer für dich selbst, so wird es sicherheitshalber nicht ausgeführt. Solltest du eine Dokumentation finden, die dich auf chmod 777 verweist, so legen wir dir ans Herz, dich nach einer Alternative umzusehen - die Autoren haben dann offensichtlich kein tiefergehendes Verständnis von Sicherheit.

Kompatibilität mit mod_env

Während prinzipiell das Setzen beliebiger Umgebungsvariablen in .htaccess-Dateien mittels SetEnv durchaus zulässig ist, so reicht suEXEC aus Sicherheitsgründen nicht sämtliche Umgebungsvariablen an das ausgeführte Script durch. Lediglich solche Variablen, die in einer Whitelist aufgeführt sind, werden weitergegeben. Erlaubt sind unter anderem Variablen, die mit „HTTP_“ beginnen (siehe Quelltext). Achte bei der Entwicklung darauf, dieses Präfix zu verwenden!

Hintergrund ist, dass hierbei eine Vielzahl von Variablen gesetzt werden könnten, die die Ausführung des Programms in unerwarteter Weise beeinträchtigen könnten, beispielsweise wenn auf diesem Weg ein anderer Wert für PERL5LIB gesetzt würde und plötzlich dein Script andere Perl-Libraries verwendet als sonst. Da suEXEC prinzipbedingt keine Liste potentiell kritischer Variablen kennen kann, da es ja nicht weiß, welche Variablen für welche Programme welche Bedeutung haben, lässt es nur eine definierte Liste bestimmter Variablen bis zur Applikation durch.

Bei FastCGI-Scripts - und damit auch für PHP-Scripts, die bei uns ebenfalls unter FastCGI laufen - gilt besonders zu beachten, dass hier die jeweiligen Programme persistent laufen und somit ausschließlich die Umgebungsvariablen kennen, die beim Start der Applikation vorlagen.

webserver/suexec.txt · Zuletzt geändert: 2015/01/07 10:48 von uber