Hi!
das Problem ist wohl bekannt: Ordner und Dateien wurden via FTP hochgeladen und Zugriffsrechte sind auf 755 (Ordner) bzw. 644 (Dateien) gesetzt. Will ein PHP-Script nun schreiben, dann wird ihm der Zugriff verwehrt, weil es nicht Besitzer der Datei/des Ordners ist.
Nunja, das hängt stark von der Server-Konfiguration ab. Unter welchem Benutzer wurde per FTP die Datei angelegt? Unter welchem Benutzer läuft das PHP-Script? Das ist hauptsächlich bei unzulänglichen Hosting-Konfigurationen problematisch, wo der Apache unter einer einzigen Kennung alle Kunden bedient. Hat man hingegen PHP unter einem individuellen User laufen, so kann man schon deutlich besser individuelle Rechte konfigurieren.
Vor der Vergabe von 777 als Zugriffsrecht wird in diversen Foren, Tutorials aus Sicherheitsgründen gewarnt.
Leider wird auch immer wieder nicht beachtet, dass nicht nur die Rechte interessant sind, sondern die Benutzer maßgeblich für eine genauere Betrachtung. 0777 ist schnell geschrieben und das Problem "gelöst". Die Besitzverhältnis-Betrachtung bleibt auf der Strecke.
Rahmenbedingung:
- safe-mode ist OFF
- open_basedir ist auf meinen Benutzeraccount gesetzt
Das sind zwei PHP-Einstellungen. Der Safe-Mode versucht das Alles-unter-einer-Kennung-Problem zu lösen, und open_basedir hat mit den Betriebssystem-Rechten nichts weiter zu tun.
Die Zugriffsrechte betreffen nur dem System bekannte Benutzer, jemand müsste also sich bereits "im System" befinden, damit die Dateirechte überhaupt erst auf ihn angewendet werden.
Ja, vor allem geht es um die anderen Benutzer, die sich ebenfalls im System tummeln. Diese sollten mit ihren Kennungen nicht in "meinem" Bereich rumfummeln dürfen. Es gilt zunächst ein Benutzer- und Gruppen-Konzept auszuarbeiten. Auch der PHP-Benutzer muss nicht überall schreiben können. Es reicht, wenn er per Gruppe Leseberechtigung erhält und in ausgewählten Verzeichnissen seine Daten ablegen kann. Sprich: Besitzer sollte die FTP-Kennung sein, der PHP-Benutzer kommt in die selbe Gruppe. 0750 und 0640 wäre für Verzeichnisse und Dateien ausreichend. Dinge, die der Apache direkt ausliefert, müssen für ihn lesbar sein. Also bekommen diese 0755 und 0644. Und da wo die PHP-Kennung schreiben soll, kommt noch das Gruppen-w hinzu.
Da den Usern des SharedHostings der Handlungsrahmen mit open_basedir eingeschränkt wird, kann nicht jeder andere User auf meine Dateien zugreifen.
So die Theorie. In der Praxis kann es Lücken geben. Du betrachtest außerdem nur die PHP-Nutzer. Für alle anderen Benutzer/Anwendungen gilt keine open_basedir-Beschränkung.
So bleiben als User noch mein PHP-Script und mein FTP-Account.
Was spricht denn nun dagegen, die Dateirechte entsprechend hochzusetzen?
Die Nicht-Notwendigkeit und immer noch Sicherheitsaspekte. Man sollte es Angreifern schon noch etwas schwerer machen, so dass sie einen Root-Exploit benötigen, und nicht einfach nur das open_basedir umgehen müssen.
Lo!