Neuigkeiten:

still alive...

Hauptmenü

On-the-fly-Schreibrechte

Begonnen von k00ni, 03. August 2007, 16:44:49

Vorheriges Thema - Nächstes Thema

k00ni

Scheint so, als gäbe es keine PHP-Funktion für das Prüfen der Schreiberechte auf einzelne Ordner. Wenn dem doch so ist, würde ich mich über einen Link freuen.
Stattdessen muss ich erstmal etwas anderes verwenden. Ich dachte mir, wenn du keine Schreibrechte hast, dann holst du sie dir einfach. In der jetzigen Version meines Skriptes muss der Administrator einem Ordner fest das Recht 0777 setzen, damit User dort Bilder reinladen können. Nun wird das Skript einfach sagen, wir setzen den Ordner beim Upload eines Bildes auf 0777 und danach wieder auf ein eingeschränkteres Recht. Nur welches könnte man da nehmen? Sind für mich nur Zahlen ohne Bedeutung /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />
 
Grüße

k00ni

Ich habe das jetzt abgefangen und lasse einfach eine Fehlermeldung ausgeben, wenn die Rechte nicht gesetzt wurden. Mal schauen.
An sich wäre das doch aber ein guter Punkt, um die Sicherheitsrisiken bei zu groß gefassten Zugriffsrechten einzuschränken. Man holt sich per Skript die Rechte, die man braucht und setzt sie danach wieder auf den Minimalststand, damit man noch mit den jeweiligen Dateien (PHP-Dateien, Bilder...) arbeiten kann.
Ideen und Gedanken dazu ?

Ideen und Gedanken dazu ?[/quote]
Ja. Es ist nicht nötig, 0777 zu setzen. Damit erlaubst Du jedem User lesen, schreiben/löschen und ausführen.
Welche Rechte genau deine Dateien haben sollten hängt vorallem an der Konfiguration deines Webservers. Bei meinem wird beispielsweise zu jedem Webprojekt auch ein User eingerichtet, der dann exklusiv mit einer eigenen php.ini und einem eigenen chroot ausgestattet wird. Dementsprechend braucht ein Skript dann auch nur RWX(0700) für den Besitzer.
Was die Zahlen bedeutet verrät dir http://www.google.de/search?hl=de&q=chmod+calculator\" rel=\"external nofollow\">Google.

k00ni

Ok, 0777 war vielleicht etwas übertrieben, aber von der Idee her wäre es doch interessant. Denn zur Zeit muss man ja vielerorts direkt per FTP ein 0777 setzen, damit Dinge, wie der Dateiupload, funktionieren. Dies würde ich halt dem Admin abnehmen und vom Skript entscheiden lassen.
Sicherheitskritisch wird das auch nicht, da ja das Skript nur vordefinierte Rechte vergeben kann bzw. man bei der Verwendung der jetzigen Methode eh immer das höchst benötigte Recht setzt.
 
Grüße

Powie

k00ni, Problem von vornherein: Wenn der Webuser, garnicht erst die notwendigen Rechte hat, dann kann auch das Script dir die Rechte garnicht setzen. Der übergeordnete Ordner würde schon 777 benötigen damit du deinen Ordner per php auf 777 setzen könntest. Dir bleibt teilweise gar kein anderer Weg als das FTP Programm.

Ok, 0777 war vielleicht etwas übertrieben, aber von der Idee her wäre es doch interessant.[/quote]
Was wäre interessant? Rechte \"on the fly\" zu setzen? Hört sich für mich nach einer typischen Quelle für Race Conditions an. Und wenn ich dann an threadfähige Webserver denke wird mir übel.
Denn zur Zeit muss man ja vielerorts direkt per FTP ein 0777 setzen, damit Dinge, wie der Dateiupload, funktionieren.[/quote]
Unsinn. Man muss nicht 0777 setzen, sondern macht das üblicherweise aus Bequemlichkeit. Der Hoster ist immer ein guter Ansprechpartner - der kennt sich auf seinen Systemen am Besten aus und sagt dir dann genau, welche Rechte du setzen solltest.
Einen Dateiupload kann man auch so konfigurieren, dass nur sparsam Rechte vergeben werden müssen. Um nochmal meine Konfiguration anzuführen: Jeder User hat auch ein eigenes Verzeichnis in dem jeweils Uploads, Sessiondaten und andere temporäre Dateien landen. Sessiondaten in einem geteilten /tmp-Verzeichnis sind auch eine schlechte Idee.
Sicherheitskritisch wird das auch nicht, da ja das Skript nur vordefinierte Rechte vergeben kann bzw. man bei der Verwendung der jetzigen Methode eh immer das höchst benötigte Recht setzt.
[/quote]
Du vergisst Race Conditions.
Nota bene:
Bei mir funktioniert chmod() mit Verzeichnissen problemlos. is_writeable(), is_readable() und is_executable() übrigens auch.

all your base are belong to us / Discord