Sönke Tesch: Fehler beim erstellen einer Datei

Beitrag lesen

Wenn ich dich richtig verstanden habe kann ich über .htaccess den Zugriff über den Webserver sperren. Alle anderen User, die ftp- oder shell-Zugang zum Server haben können aber meine Dateien lesen und bearbeiten.

Nicht ganz:

  • Per FTP sollte niemand Zugriff haben, weil man in dem Falle eigentlich immer im eigenen Verzeichnis landet und dieses aus Sicht des FTP-Clients das Wurzelverzeichnis darstellt (Stichwort "chroot", das Wurzelverzeichnis ist sozusagen die Mutter aller Verzeichnisse).
  • Per Direkteingabe im Webbrowser: Nein, wegen .htaccess.
  • Per Shell-Zugang: Ja, uneingeschränkt.
  • Per CGI-Anwendung über den Webserver: Ja, wenn suexec.

Beachte bitte nichtsdestotrotz, daß das Sicherheitsloch zwar da, aber wenig bekannt ist. Andererseits haben gerade die Leute, denen es bekannt ist, immer einen Heidenspaß daran :>

Worauf muß ich wenn ich den Hoster wechseln sollte achten, damit ich dieses Problem da nicht habe (d.h. was machen andere Hoster anders, bzw. meiner falsch).

Das ist ein Problem der Rechteeinteilung. Eine Datei hat Rechte für eine Person und zwei Gruppen: für den Eigentümer ("owner"), für eine zu benennende Gruppe ("group") und für den Rest der Welt ("other"). Der Webserver läuft unter einer eigenen Identität. Jeder Benutzer hat meistens eine eigene Gruppe (in der er einzigstes Mitglied ist). Man kann nun dieser Gruppe den Webserver hinzufügen, die Gruppenrechte entsprechend nutzen (lesen, evt. auch schreiben) sowie dem Rest der Welt sämtliche Rechte nehmen. Somit hätten zwar Eigentümer und Webserver (über die Gruppe) Lese- und/oder Schreibrechte, aber sonst niemand.

Der Haken an der Sache ist, daß auf den meisten Systemen die Anzahl der Gruppen, denen eine Identität angehören darf, auf eine geringe Zahl begrenzt ist; diese Obergrenze ist im Betriebssystem festgelegt (und mit _fest_gelegt meine ich _fest_gelegt). Hat ein Hoster 100 Kunden auf einem Server, müsste der Webserver nach obigem Schema 100 Gruppen zugeordnet werden. Lässt das System nur ein Maximum von 32 Gruppen zu, gibt es ein Problem. Es bleibt dann nur übrig, allen (also "other", s.o.) die benötigten Rechte einzuräumen, so wie es bei Dir im Moment der Fall ist.

Da nicht gerade wenige Hoster lediglich Wiederverkäufer ("Reseller") sind oder sonst irgendwie einen Server gemietet ("Root-Server", "Virtual Server"), aber keine großartige Ahnung davon haben, wirst Du es schwer haben einen Hoster zu finden, der sich um dieses Problem gekümmert hat, geschweige denn darum kümmern könnte, wenn er denn wollte. Die ganz Großen nehmen wir mal davon aus, allerdings haben die andere Nachteile. Und ich für meinen Teil wäre ein ganz mieser Lump, wenn ich an diesem Ort darauf hinweisen würde, daß ich mich darum gekümmert habe ;)

und wenn ich anderen Nutzern für die php-Datei nur ausführen und kein lese-Recht einräume, kann dann immer noch der Quelltext betrachtet werden?

PHP-Skripte sind in aller Regel keine eigenständigen Programme, sondern bedürfen des Webservers, um ausgeführt zu werden, und zwar schlicht und ergreifend, weil der PHP-Interpreter im Webserver steckt. Es wird Dir also nichts bringen, Ausführungsrechte zu vergeben, weil der Webserver Leserechte braucht, um das Skript zu lesen und dann an seinen PHP-Interpreter zu verfüttern.
Die Ausnahme von dieser Regel: PHP-Skripte werden als CGI-Anwendung ausgeführt. Das ist allerdings eher selten der Fall, phpinfo() sollte Auskunft geben (erster Block, "Server-API" o.ä.).

Gruß,
  soenk.e