Dateiberechtigungen beim upload (nicht per FTP) - Apache PHP

Trippeldidip

New Member
Hallo zusammen,
ersteinmal wollte ich ein ganz großes Lob an dieses Forum und die Mitglieder aussprechen. Es macht Spaß hier zu lesen.
Nun habe ich selbst ein Problem und konnte leider keine passende Antwort finden.

Umgebung:
Debian Server
Apache 2.2.3
PHP Version 5.2.0

Folgendes Szenario:
Ich arbeite mit mehreren Leuten an einem Projekt.
Ich habe auf dem Server eine neue Gruppe (developer) angelegt. Dem Apache Server habe ich diese Gruppe schon als group zugewisesen. Das bedeutet also, sobald nun jemand aus meinem Team eine Datei/ordner über ein php backend hochlädt/anlegt, wird dieser/em der "www-data"-user als Besitzer und die Gruppe developer als Gruppe zugewiesen.
Soweit läuft alles wie gewünscht.

Doch jetzt geht es an die Berechtigungen:
Ein Ordner wird mit 755 (rwx r-x r-x) angelegt.
Dateien innerhalb dieses Ordners mit 644 (rw- r-- r--)

Das bedeutet also, sobald einer in meiner Gruppe etwas auf den Server hochlädt, können andere Gruppenmitglieder diese Datei nicht bearbeiten.
Somit hätte ich gerne für alle Gruppenmitglieder noch mindestens das Schreibrecht.

Ich weiß leider nicht genau wo ich die Berechtigungen setzen müsste, um den gewünschten Effekt zu erzielen.
Habe mir schon die apache2.conf und die php.ini angeschaut....aber leider nichts gefunden. Müsste doch bestimmt irgendwo einen umask wert setzen?!

Leider bin ich mit meinem Latein am Ende.
Ich würde mich über jedde Hilfe und jeen Tip sehr freuen.

liebe Grüße,
Trippel
 
Wie läuft denn PHP unter dem Apache? Als Modul? Und wie wird hochgeladen? Per PHP bzw. HTML Formular?

Ich habe ein paar generelle Tips/Anregungen:

1) Für kollaboratives Arbeiten, vor allem beim Programmieren, bietet sich z. B. Subversion an. Damit kann man u. a. sauber versionieren, wiederherstellen und Unterschiede auflösen.

2) Ich persönlich bin ein Fan von Suexec als Modul für den Apachen. Damit kann man PHP (als cgi/fcgi) mit einem eigenen User ausführen, der nichts mit dem Apachen zu tun hat. Dazu gibt es einen SFTP- oder FTP-User und schon haben alle neuen Dateien die gleichen Rechte. Egal, ob die per FTP oder per PHP-Formular-Verarbeitung auf dem Server landen.

Der initiale Verständnis- bzw. Konfigurationsaufwand ist jedoch etwas höher. Dazu gewinnt man (bei korrekter Rechtevergabe) etwas mehr an Sicherheit gegenüber dem PHP-Modul.
 
Hallo dev,

Wie läuft denn PHP unter dem Apache? Als Modul?
Ja PHP läuft als Modul

Und wie wird hochgeladen? Per PHP bzw. HTML Formular?
ich nutze momentan Joomla. Somit wird per php bzw. HTML-Formular hochgeladen. Richtig

zu 1
Ja die Überlegung hatte ich auch schon und dies werde ich auch noch einrichten. Doch leider muss dies noch ein wenig warten. Eine Versionskontrolle ist definitiv ein muss.

zu2
Soweit ich weiß, ist es sehr Ressourcenfressend, wenn man php als cgi-Programm installiert.
 
Nicht im fastcgi Modus, diese Schnittstelle ist wesentlich performanter als nur cgi oder als suphp. Suphp z. B. muss bei jedem Request neu in den Speicher geladen werden, die cgi Instanzen verbleiben noch eine Weile im Speicher.

Das PHP-CGI Modul aus dem Stable-Debian-Zweig ist übrigens cgi/fcgi fähig.

In Verbindung mit dem apache-mpm-worker braucht man sogar weniger Ressourcen als mit einem apache-prefork + php als Modul.

Vor dem Hintergrund dass eine Joomla Installation läuft, würde ich auf "gekapseltes" suexec/fcgi PHP setzen. Andernfalls kann Dir über eine unsichere Joomla-Komponente oder einen Fehler im Core der ganze Rechner aufgemacht werden (php läuft mit Apache UID/GID). Ich würde sogar sagen, dass genau diese Softwarekombination in Verbindung mit "schlechten" Skripten eine der häufigsten Schwachstellen aller Server da draussen ist.

Es sei denn, Du und Deine Mitstreiter wissen ganz genau, was Sie tun...
 
Bin leider noch nicht sehr im Thema, was Serverkonfiguration angeht.
Werde mich diesbezüglich weiter belesen.

Fange gleich mal mit suexec/fcgi PHP an.
Du denkst diese Kombi wäre am besten?

Gibt es auch eine temporäre Lösung für meinen lokalen Server?
Wie kann ich es ohne cgi Lösen?
 
Last edited by a moderator:
Ich war vor einiger Zeit an dem selben Punkt wie Du und habe mich nach viel Recherche für die apache-mpm/fastcgi/suexec Kombi entschieden. Trotz der Mehrarbeit bin ich froh, mich durch die initialen Verständnishürden gebissen zu haben.

Diese Anleitung ist übrigens sehr gut:

http://www.aaron-spettl.de/ubuntu/debian-etch-apache2-php5-fcgi-suexec.php

Und hier noch Punkt 5.2: Apache2.2 + PHP5 + FastCGI + suEXEC auf Debian Etch - personal blog

Versuche, das zugrunde liegende Konzept zu verstehen (Userechte und Dateiowner)! Wenn die Files auf dem Server wieder 755 statt 750 kriegen (Unachtsamkeit, Faulheit?), ist alles dahin, was man sich an Vorteilen verspricht.

Ich bin übrigens 'damals' über die erste Zeile des Starterskriptes gestolpert:

#!/bin/sh
PHPRC="/var/www/vhosts/projekt/conf/"
export PHPRC
exec /usr/bin/php5-cgi


Hatte die Zeile vergessen/übersehen und habe zwei Tage erfolglos versucht, PHP so zum Laufen zu bewegen.

Schau Dich in den /var/apache/logs um (bzw. die Apache-Logdatei für den vhost) wenn was nicht laufen sollte. Der Apache und suexec loggen alle Fehler!
 
Gibt es auch eine temporäre Lösung für meinen lokalen Server? Wie kann ich es ohne cgi Lösen?

Das Upload-PHP Skript so anpassen, dass es nach dem move_uploaded_file den Owner und die Berechtigungen neu setzt. Das ist in meinen Augen aber eine ziemlich dreckige Lösung.
 
Du hast Recht dev,

man sollte das Problem an der Wurzel packen. Ich danke dir sehr für deinen ausführlichen Bericht und die Links.
 
Das Upload-PHP Skript so anpassen, dass es nach dem move_uploaded_file den Owner und die Berechtigungen neu setzt. Das ist in meinen Augen aber eine ziemlich dreckige Lösung.

Ich dachte auch eher an sowas wie umask im apache um die Berechtigungen zu ändern.
Man muss das doch irgendwo in der config ändern bzw. anpassen können.
Irgendwo muss doch festegelgt werden wie standardmäßig abgelegt wird. Also mit welchen Berechtigungen.
 
Könnte auch funktionieren. Du brauchst ja dann mindestens 760 für die Dateien:

Owner: rwx
Group: rw-
World: ---

Allerdings weiss ich nicht, wie man das für den Apache einstellt, da sich über die Rechte für www-data schon Leute Gedanken gemacht haben, denen ich mal vertraue :)
 
Back
Top