PHP-erzeugte Standard Dateiberechtigungen setzen

Apache, Lighttpd, nginx, Cherokee
Post Reply
vpn-user
Posts: 71
Joined: 2003-02-25 20:54
 

PHP-erzeugte Standard Dateiberechtigungen setzen

Post by vpn-user »

Sorry für das Crossposting in "Scripting", aber mein Problem betrifft sowohl Apache als auch PHP:

Hallo Group,

wie kann ich systemweit die Berechtigungen (UNIX) für von PHP erstellte oder hochgeladene Dateien festlegen?

Ich betreibe PHP als CGI mit Apache und SuEXEC. Damit SuEXEC korrekt arbeitet, erhalten alle Dateien den Besitzer des ausgeführten Scripts als neuen Besitzer. Das ist auch gut so, auch die Gruppe wird übernommen. Allerdings erhält nur der Besitzer Lese- & Schreibrecht, nicht die Gruppe (Bei mir Apache). Wie kann ich das systemweit definieren, dass auch Apache (Group) lesen darf?

Ein "chmod($uploaded_file, 0740);" fällt flach, ich kann schlecht jedem Kunden zumuten, seine Scripts anzupassen.

Was habe ich für Möglichkeiten?

Grüße vom Bodensee
Mario
s4fuser
Posts: 136
Joined: 2003-06-01 01:22
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by s4fuser »

Soll ich meine Fragen zu einem PHP-Skript, das auf eine mySQL-DB zugreift, jetzt in
- Datenbanken,
- Scripting,
- Webserver (das Problem könnte auch am Apache liegen) und
- Newbie (ich bin Newbie)
schreiben?
jamesb
Posts: 661
Joined: 2002-05-08 15:35
Location: Karlsruhe
Contact:
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by jamesb »

s4f-User: erstmal in Scripting, wenn's sich auf den MySQL-Query bezieht, ins Datenbanken, wenn du dir sicher bist, dass der Apache (oder das PHP-Binary) selbst dran schuld ist, da rein und wenn du dir die Frage selbst in 30 Sekunden beantworten könntest, ins Newbie :-)

VPN-User: Ist dann doch eher eine Apache/PHP-spezifische Frage, darum hab' ich das x-post im Scripting gelöscht.

Zu deiner Frage :-): Du meinst, die hochgeladenen Dateien bekommen 700 als umask? So wie du das beschreibst hat dein PHP-Script dann also auch die umask 700? Warum nicht einfach 755 bzw. 644 (je nach Einstellungen)?
Andere Möglichkeit (mein Favorit :)) wäre der Einsatz von suPHP... Aber wenn deine Konfig mit suExec schon läuft wäre ein Umstieg nicht das Gelbe vom Ei.

JamesB
vpn-user
Posts: 71
Joined: 2003-02-25 20:54
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by vpn-user »

JamesB wrote:Zu deiner Frage :-): Du meinst, die hochgeladenen Dateien bekommen 700 als umask? So wie du das beschreibst hat dein PHP-Script dann also auch die umask 700? Warum nicht einfach 755 bzw. 644 (je nach Einstellungen)?
Nein, die Dateien erhalten 600 als Umask. Wie und wo kann ich die denn ändern? In der PHP.INI habe ich nichts gefunden.
JamesB wrote:Andere Möglichkeit (mein Favorit :)) wäre der Einsatz von suPHP... Aber wenn deine Konfig mit suExec schon läuft wäre ein Umstieg nicht das Gelbe vom Ei.
Diese Lösung fällt leider flach, da keine wirklich sichere PHP-als-Modul & Kundenhostingumgebung (mit eigenem Zugang) ausser der CGI-SuEXEC(CHDIR)-Variante gibt. Klar, performanter wäre es, zumal man auch Cachingmodule für PHP einsetzen kann usw., aber ist eben nicht sicher genug für meine Zwecke.
jamesb
Posts: 661
Joined: 2002-05-08 15:35
Location: Karlsruhe
Contact:
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by jamesb »

Diese Lösung fällt leider flach, da keine wirklich sichere PHP-als-Modul & Kundenhostingumgebung (mit eigenem Zugang) ausser der CGI-SuEXEC(CHDIR)-Variante gibt.[/quote]
suPHP bedeutet nicht, das PHP als Modul läuft, sondern über ein suexec-ähnlichen Wrapper gestartet wird - d.h. maximale Sicherheit (so hoch wie bei suexec), nur eben speziell für PHP zugeschnitten.

JamesB
vpn-user
Posts: 71
Joined: 2003-02-25 20:54
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by vpn-user »

JamesB wrote:suPHP bedeutet nicht, das PHP als Modul läuft, sondern über ein suexec-ähnlichen Wrapper gestartet wird - d.h. maximale Sicherheit (so hoch wie bei suexec), nur eben speziell für PHP zugeschnitten.
Hm. Und warum steht dann bei Voraussetzungen für SuPHP "mod_php"? Also PHP als Modul?

Egal, ich brauche SuEXEC, da auch Perl- und Pythonscripte ausgeführt werden können sollen.

Du verschweigst mir, wie man das mit der UMASK macht :roll:
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by Joe User »

VPN-User wrote:Du verschweigst mir, wie man das mit der UMASK macht :roll:
http://httpd.apache.org/docs-2.1/suexec.html
vpn-user
Posts: 71
Joined: 2003-02-25 20:54
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by vpn-user »

Supi. Ohne diese Anleitung hätte ich SuEXEC wohl kaum zum Laufen gebracht. Darin steht aber nichts über neu angelegte Dateien, die z.B. PHP erzeugt!
vpn-user
Posts: 71
Joined: 2003-02-25 20:54
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by vpn-user »

@JamesB? Du wolltest mir doch weiterhelfen 8) ...
jamesb
Posts: 661
Joined: 2002-05-08 15:35
Location: Karlsruhe
Contact:
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by jamesb »

Dein umask-Problem ist wohl eher ein PHP-Problem als ein Problem mit SuEXEC. Ist in der php.ini vielleicht was falsch eingestellt?

Und zu suPHP: Wo bitte steht dass man mod_php braucht? Du brauchst das PHP-Binary und suPHP, welches einmal ein Modul für Apache ist (zur Integration) und eine externe Binary, welches vom Modul ausgeführt wird und dann die Aufgaben von suExec übernimmt.

JamesB
vpn-user
Posts: 71
Joined: 2003-02-25 20:54
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by vpn-user »

Also in der PHP.INI habe ich ausser dem Pfad für Sessions niemals etwas geändert. Wo soll man denn das mit der UMASK einstellen können? SuPHP schweigt sich dazu ja auch aus... Ausserdem läuft es nicht mit Apache2, den ich einsetze.
hever
Posts: 74
Joined: 2003-09-14 15:23
Location: Münster
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by hever »

Hallo,
ich habe suPHP laufen und hatte denke ich ein ähnliches wenn nicht sogar das gleiche problem wie du. (Dieser thread ist etwas undurchsichtig).

Soweit ich weiß gibt es keine Möglichkeit die umask in der php.ini zu beeinflussen, jedoch kann man sie in der /etc/suphp/suphp.conf ändern. (umask = xxxx)

Die umask kann auch in php für das aktuelle script mit dem befehl umask geändert werden. Guck mal in die doku auf php.net dort gibts auch noch weitere informationen zur umask.
rootsvr
Posts: 538
Joined: 2005-09-02 11:12
Contact:
 

Re: PHP-erzeugte Standard Dateiberechtigungen setzen

Post by rootsvr »

Wenn ich das richtig verstanden hab:
Du hast ein Problem das dein per suExec laufender Server neue Dateien mit nur Owner-darf rechten erstellt) 600? und Du willst jetzt noch den Apache dazu haben?

Wofür bitte?

Der Vorteil von suExec ist doch eben das es nur der Besitzer lesen darf und der Apache als eben dieser User ausführt.. ich seh den Sinn nicht.

wie man die Default UMask ändert (nehme an es ist die Standardmäßige) müßte ich nachgucken, umask ist nen anfang ;-)
Post Reply