Webserver - Dateiberechtigungen

Fluffy_Unicorn

Met-Brauer
Registriert
8 Aug. 2013
Beiträge
605
Ort
47.07°N / 7.85°O
Hallo Leute,

Habe ein Problem, bei dem ich gerade anstehe (resp. ein bekannter von mir, der mich da reingezogen hat :D).

Folgende Situation: Mithilfe eines PHP-Formulars sollen von jedem beliebigen Besucher Dateien auf den Webserver (Apache) geladen werden. Ein neuer Ordner mit Name/Vorname des Besuchers soll dann angelegt werden, und in dem Ordner sollen die hochgeladenen Dateien abgelegt werden.
Zugriff auf die Datei soll dann nur ein ftp-Benutzer haben.

Das PHP-Script (Der Besucher) sollte die Datei und den Ordner also anlegen können, gleichzeitig aber kein Zugriff darauf haben.
Dem FTP-Benutzer sollten die Rechte aber gewährt werden.

Jetzt finde ich keinen Ansatz, wie ich dies realisieren könnte. Hat wer eine Idee?

Gruss
 
Du gibts dem FTP User Zugriffsrechte und entziehst sie dem Webserver. Fertig.

Zugriff nur für den Besitzer einstellen:


Den Besitzer ändern:
 
  • Thread Starter Thread Starter
  • #3
Hab ich schon ausprobiert, dies führt jedoch zu einem "chmod()/chown(): Operation not permitted"-Fehler. Dies kommt wahrscheinlich davon, dass der PHP-User keine Rootrechte hat und so die Befehle nicht ausführen darf...
 
Der richtige Weg wäre es auch, die Datei in ein nicht öffentliches Verzeichnis zu schreiben.
 
Wenn der Besucher über ein uploadformular die Daten hoch läd - weiß er ja eigentlich nicht so du diese hin speicherst...
Du kannst die Datei ja in einen beliebigen Ordner legen - somit hat der Besucher auf seine Daten nach dem upload ja erst mal keinen Zugang auf die Datei (Vergleich one-click-hoster, wenn die Seide den Link nicht ausgeben würde - würdest du die nie wieder finden)
Zusätzlich kann der Ordner in dem die Dateien liegen noch per .htaccess geschützt werden - das hat dann auf den FTP-Benutzer keinerlei Einfluss.
 
Soll tatsächlich das PHP-Skript oder bloss der Webserver keinen Zugriff mehr auf die Datei haben, bzw. die Datei nicht öffentlich ausliefern? In letzterem Fall reicht eine per-Directory-Konfiguration (<Directory>-Abschnitt oder .htaccess-Datei) des Inhalts
[src=apache]Order allow,deny
Deny from all[/src]
Sinnvoller wäre, die Dateien ausserhalb des Web-Roots zu speichern, wenn das die Serverkonfiguration (Rechtestruktur und Einschränkungen wie open_basedir) erlaubt. Bloss das Verzeichnis geheim zu halten ist IMHO gefährlich, da URIs leicht in der Browser-History, über Referer-Header im Log anderer Websites und bei Unachtsamkeit u.U. sogar in Suchmaschinen auftauchen.
 
  • Thread Starter Thread Starter
  • #7
Danke erstmals für eure Antworten.

Nach dem Hochladen soll NUR noch der ftp-Benutzer Zugriff darauf haben, sonst keiner mehr.

Kurze Veranschaulichung:

Root
--Dokumente (Ordner)
----Max Mustermann (Ordner)
------Dok1 (Datei)
------Dok2 (Datei)
----Hans Zimmer (Ordner)
------Dok1 (Datei)

Mein erster Vorschlag wäre ja gewesen, dem PHP-Benutzer ("www-data", glaube ich), auf den Hauptordner (Dokumente) "Write-Only"-Rechte zu geben (sofern dies möglich ist, kenne mich im Systembereich nicht gut aus), und dem ftp-Benutzer alle Rechte.
Diese sollten ja eigentlich auf neu erstellte Unterordner vererbt werden, oder sehe ich das falsch?

Ausserhalb vom Web-Root speichern - könnte eine gute Lösung sein, muss einmal prüfen was da möglich wäre.
 
Warum willst / musst du dem www-data die rechte nehmen? Besteht die Gefahr das jemand beliebige Scripte über den Webserverprozess laufen lässt?
 
  • Thread Starter Thread Starter
  • #10
So, nochmal ne kurze Rückmeldung: Die Dateien werden nun ausserhalb des Web-Roots gespeichert, und so funktioniers nach Wunsch, danke für eure Hilfe :).
 
Zurück
Oben