PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Besitzrechte von Ordnern (CHMOD)


Zolu
2008-03-31, 00:53:44
Hallo zusammen,

ich bin gerade dabei ein Uploadscript mit PHP / MySQL zu realisieren.

Dabei sollen die Benutzer Bilder und RAR/Zip - Dateien hochladen dürfen.

Jetzt zu meinem Problem:

Wenn ein User etwas hochlädt, wird dieses in den Ordner "up" gelegt. Es bekommt damit dann vom Webserver den CHMOD 660. Wenn ich Bilder hochlade passiert genau das gleiche.

Ich will jedoch, dass die Bilder direkt via Link "www.xxxxxxx.de/up/deinBild.jpg" aufrufbar sein sollen. Die RAR-Dateien jedoch nicht. Diese sollen nur über den programmierten Downloader herunterladbar sein.

Wenn ich die Rechte auf 664 änder, kann ich zwar auf die Bilder mittels Direktlink (s.o.) zugreifen, jedoch auch auf die RAR Dateien. Damit ist mein Downloader nutzlos.

Bekommt man es hin, dass man einen Ordner für Bilder macht und einen für RAR Dateien? Dass der eine via Direktlink aufgerufen werden kann, der andere jedoch nur vom Script die Downloads bereitstellt?

Denn das war auch ein Problem, wenn man 660 hat. Dann lädt man quasi eine leere Datei herunter, da auf die Datei auch vom Script her nicht zugegriffen werden kann.

Irgendwie muss es aber doch lösbar sein, schließlich gibt es ne Menge guter Uploaddienste, die es so hinkriegen.

Ich freue mich über jeden Beitrag.

Gruß
Zolu

ezzemm
2008-03-31, 07:12:07
Ermittle vor dem Uploaden welches Dateiformat gerade hochgelagen werden soll; und die Rar's kommen dann einfach in ein separaten Ordner.

The_Invisible
2008-03-31, 07:50:08
am besten ladest du das in ein verzeichnis was von der welt nicht zugänglich ist, also über "DocumentRoot" liegt.

Ein Script streamt dann einfach die Dateien aus diesem Ordner, so mache ich es jedenfalls immer.

mfg

Gast
2008-03-31, 11:50:59
Ein Script streamt dann einfach die Dateien aus diesem Ordner, so mache ich es jedenfalls immer.
und wenn man nicht ganz genau aufpasst streamt dieses script dann bei übergabe der richtigen parameter auch noch gleich den restlichen inhalt der festplatte - ist vielleicht nicht immer wünschenswert ;)

Zolu
2008-03-31, 12:53:50
Ermittle vor dem Uploaden welches Dateiformat gerade hochgelagen werden soll; und die Rar's kommen dann einfach in ein separaten Ordner.

Das is ja nicht das Problem. Problematisch ist es, wie soll ich die RAR Dateien herunterladen wenn sie mit 600 geschützt sind?

Wenn ich diese versuche über mein Downloadscript herunterzuladen, kriege ich eine 0 Byte Datei.

Wenn ich das so umgehen würde, dass die Dateien vor dem Download den CHMOD 644 kriegen würden, dann weiß ich jedoch nicht den Endzeitpunkt, sprich, wann diese wieder 600 kriegen muss.

Gibts dafür eine Lösung?


@ The_Invisible: Das Projekt läuft auf einem v-Server.

The_Invisible
2008-03-31, 13:10:27
und wenn man nicht ganz genau aufpasst streamt dieses script dann bei übergabe der richtigen parameter auch noch gleich den restlichen inhalt der festplatte - ist vielleicht nicht immer wünschenswert ;)

ähm, das man das script entsprechend absichern muss wollte ich nicht extra erwähen, sollte ja heute zum standard gehören, außerdem gibts ja noch open_basedir und so zeugs.

@Zolu
wir stellen unseren kunden immer auch einen ordner zur verfügung der per web nicht erreichbar ist. ansonsten kann man sich auch mit einer .htaccess datei behelfen.

mfg

Zolu
2008-04-01, 22:51:09
Selbst eine Umstellung von 600 auf 664 vorher bringt zwar den Erfolg, dass man downloaden kann, aber da es keinen "Endzeitpunkt" gibt, bringt es wenig direkt danach die Rechte wieder auf 600 zu ändern, denn dann lädt man nur die Größe die möglich zwischen dem Anfang des Downloads und der Ausführung des chmod Befehls.

Die Zeit ist demnach zu kurz.

Gibt es denn keine Lösung dieses zu realisieren? Andere Seiten kommen doch auch damit zurecht.

Gruß
Zolu

ezzemm
2008-04-02, 07:02:59
Ermittle vor dem Uploaden welches Dateiformat gerade hochgelagen werden soll; und die Rar's kommen dann einfach in ein separaten Ordner.
Das is ja nicht das Problem. Problematisch ist es, wie soll ich die RAR Dateien herunterladen wenn sie mit 600 geschützt sind?
Wenn ich diese versuche über mein Downloadscript herunterzuladen, kriege ich eine 0 Byte Datei.
Wenn ich das so umgehen würde, dass die Dateien vor dem Download den CHMOD 644 kriegen würden, dann weiß ich jedoch nicht den Endzeitpunkt, sprich, wann diese wieder 600 kriegen muss.

Wenn du mit einem Downloadscript arbeitest benötigst du keine engeschränkten Rechte am Ordner, weil der Nutzer die URL nie zu Gesicht bekommt. Zumindest wenn du im DL-Script eine Header-Weiterleitung einbaust (Muss am Anfang vor dem ersten Leerzeichen stehen).

<?php
header("Location:Download-URL");
?>

The_Invisible
2008-04-02, 08:27:42
Wenn du mit einem Downloadscript arbeitest benötigst du keine engeschränkten Rechte am Ordner, weil der Nutzer die URL nie zu Gesicht bekommt. Zumindest wenn du im DL-Script eine Header-Weiterleitung einbaust (Muss am Anfang vor dem ersten Leerzeichen stehen).

<?php
header("Location:Download-URL");
?>

unter firefox kannst unter eigenschaften schauen wo die datei wirklich herkommt oder ein downloadmanager zeigt es auch.

andere seiten machen das übrigens auch mit streams wenn du deren wirklichen urls ansiehst. ist ja nichts weiter als header setzen und datei lesen und ausgeben.

mfg