Ich habe php- Scripte bei meinem Provider
die Ordner und Dateien schreiben
und dann bzw. dabei die Rechte auf 777 setzen.
Hatte ich so gemacht:
mkdir( $temp , 0777 )
Das Resultat war das ich nun da nicht mehr ran komme an die Dateien auch nicht mit SSH:
Jetzt habe ich in PHP die Befehle etwas gändert:
mkdir( $temp , 4777 ) bzw. chmod ( $session , 4777 ) .
mit der „4“ setzt du dann die su-ID, so dass Du mit jeder User-ID an die Daten herankommst. Ist prinzipiell schon eine Lösung, weicht allerdings die Sicherheit im System etwas auf, weil dann wirklich jeder User an die Daten herankommt.
Das spielt in Deinem Beispiel jedoch keine Rolle, denn es kann ja theoretisch sowieso jeder an Deine Daten heran, der einen Zugriff auf PHP-Skripte auf dem gleichen Webserver hat, da PHP bei Dir als „wwwrun“ läuft.
Ich selbst mache es immer so, dass ich solche Dateien auch immer mit einem eigenen PHP-Skript lösche. Damit gibt es dann immer einen Verantwortlichen, der die Daten erzeugt und gleichzeitig wieder entfernt. Das ist eigentlich auch der Sinn der Rechtevergabe unter Unix/Linux.
Orfner 4777 geschützt wenn er in 0777 drin ist ?
Wie ist das mit verschachtelten Ordnern ?
Der äußere könnte doch den inneren schützen oder ?
Ich meine so könnte ein anderer user erst gar nicht so weit vordringen.
Wäre das eine Möglichkeit ?
Wie ist das mit verschachtelten Ordnern ?
Der äußere könnte doch den inneren schützen oder ?
Das klappt bedingt, wenn Du z.B. die Execute-Rechte des Ordners einschaltest, die Read-Rechte aber abschaltest. Dann kann ein PHP-Script keine Auflistung der enthaltenen Dateien erhalten (Deine Eigenen aber auch nicht).
Ich habe php- Scripte bei meinem Provider
die Ordner und Dateien schreiben
und dann bzw. dabei die Rechte auf 777 setzen.
Hatte ich so gemacht:
mkdir( $temp , 0777 )
Das Resultat war das ich nun da nicht mehr ran komme an die
Dateien auch nicht mit SSH:
Das ist auch 0755 und nicht 0777.
umask(0000) vor dem mkdir sollte helfen. Siehe PHP-Doku: Der Mode wird ebenfalls mit der aktuellen umask modifiziert, welchen Sie mittels umask() ändern können.
rm -rf *
rm: Entfernen (unlink) von
»00017961865c4f766fdbb3cd8fe0bfb0/show.php« nicht möglich:
keine Berechtigung
Logisch, du bist nicht wwwrun und hast keine Schreibrechte.
Entweder per Script löschen, oder eben die Berechtigungen richtig setzen.
Jetzt habe ich in PHP die Befehle etwas gändert:
mkdir( $temp , 4777 ) bzw. chmod ( $session , 4777 ) .
Ist das eine gute Lösung ?
Nein. SUID Bits sind für was ganz anders gut. Du willst umask verwenden…