PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache und PHP



tuxer
15.11.2003, 14:29
Hallo Leute,
ich habe folgendes Problem, wenn ich mit einem PHP-Script eine Datei erstellte gehört diese dem User:wwwrun und den Gruppe:nogroup an.
Wie kann ich diese ändern damit die Datei mir gehört:
User:tuxer group:users

Ich verwende Suse 8.2
:help:

Tuxer

HangLoose
15.11.2003, 15:00
moin

chown tuxer <datei>

chgrp users <datei>


Gruß HL

tuxer
15.11.2003, 15:04
Erstmal vielen Dank für die Antwort. Aber ich wollte es nicht von Hand machen.
Eigentlich sollte es von alleine gehen. Kann man das nicht irgendwo einstellen. Bei Apache oder PHP??

Gruß
Tuxer

HangLoose
15.11.2003, 15:28
Erstmal vielen Dank für die Antwort. Aber ich wollte es nicht von Hand machen.
Eigentlich sollte es von alleine gehen. Kann man das nicht irgendwo einstellen. Bei Apache oder PHP??

Gruß
Tuxer

ob und wie das möglich ist, kann ich dir aus'm stehgreif auch nicht sagen. schon mal die php configfiles abgegrasst?


Gruß HL

tuxer
15.11.2003, 15:40
>schon mal die php configfiles abgegrasst?
Ja, habe ich. Ich kann allerdings nicht viel damit anfangen
;(

Gruß
Tuxer

tuxer
16.11.2003, 18:57
Hallo zusammen,

ich hab die Lösung gefunden. Man muss die Datei vorher anlegen und dann die Rechte wie folgt verteilen.
-rw-r--rw- 1 tuxer users 249 2003-11-16 18:03 beispiel.txt
:]

Trotzdem vielen Dank für eure Hilfe !!!

Gruß
Tuxer

damager
17.11.2003, 08:19
ist ja klar, die files werden mit den rechten vom server (apache) angelegt ....und dieser läuft nun mal mit wwwrun:nobody.

entweder den user für apache umstellen oder in php die rechte ändern (http://www.php.net/chown).
viel spaß!

Unknown
09.10.2005, 15:56
Ich habe im Moment auch das Problem, dass mein Apache Dateien, die ich z.B. mit PHP anlege mit dem user apache:apachegroup anlegt ... Was heißt Problem ist eben technisch so da der Webserver mit mod_php läuft und nicht mit PHP / CGI ...

Wenn ich nun eine Datei anlege, bekommt die die Rechte 604, wie kann ich das beeinflusen mit umask ? Wenn ja wie ?

proggi
09.10.2005, 17:18
Îch würds mit einer .htaccess-Datei probieren. Inhalt:
Group users


Kenne allerdings die genauen Configs des Apache nicht.

Unknown
10.10.2005, 16:21
Îch würds mit einer .htaccess-Datei probieren. Inhalt:
Group users


Kenne allerdings die genauen Configs des Apache nicht.

Wie meiste das ?

Apache ist nicht in der gleichen Gruppe wie die Webuser ...

tr0nix
11.10.2005, 13:57
@hangloose:
oder einfach chown <user>:<group> <file>

@unknown:
604? Glaub ich nicht ;).. meinst du vielleicht 644? Zudem sind die rwxrw-rw- Permissions nicht ratsam wegen write-Permissions fuer alle! Wenn du den Kernelsupport hast, solltest du deinen Wunsch mit ACLs realisieren koennen. Einfach "man setfacl" / "man getfacl" (ggf. Tools nachinstallieren).

Im Prinzip ist es so:
- Dateien welche durch Webapplikationen auf dem Apache erstellt werden, erhalten die Ownerships (user/gruppe) des entsprechenden Apache-User.
- Die Permissions der Dateien ist entweder von der Apache-Konfiguration, der Applikation (welche einen chmod ausfuehrt) oder der umask des Apache Users abhaengig.

Willst du ein Directory machen fuer jeden User in welche er Dateien ablegen kann (auf diese er spaeter auf dem System zugreifen koennen soll), kannst du entweder das professionellere mit den ACLs machen oder einfach (dafuer unschoener):

groupadd user1grp
useradd -m -s /bin/bash -G user1grp -d /home/user1 user1
( passwd user1 )
mkdir /var/www/html/user1-upload
chown <apacheuser>:user1grp /var/www/html/user1-upload
chmod g+rws /var/www/html/user1-upload

Das _sollte_ so klappen.. ich bin ein bisschen Solaris-getuned wegen meinem Job, sollte aber so auch auf Linux funktionieren. Natuerlich sollte die Webapplikation den User zuerst richtig Authentifizieren etc. .

-> nochmals: die Kommandos kommen aus dem Kopf und sind ungetestet. Fehler moeglich.

Unknown
11.10.2005, 17:26
@hangloose:
oder einfach chown <user>:<group> <file>

@unknown:
604? Glaub ich nicht ;).. meinst du vielleicht 644? Zudem sind die rwxrw-rw- Permissions nicht ratsam wegen write-Permissions fuer alle! Wenn du den Kernelsupport hast, solltest du deinen Wunsch mit ACLs realisieren koennen. Einfach "man setfacl" / "man getfacl" (ggf. Tools nachinstallieren).

Im Prinzip ist es so:
- Dateien welche durch Webapplikationen auf dem Apache erstellt werden, erhalten die Ownerships (user/gruppe) des entsprechenden Apache-User.
- Die Permissions der Dateien ist entweder von der Apache-Konfiguration, der Applikation (welche einen chmod ausfuehrt) oder der umask des Apache Users abhaengig.

Willst du ein Directory machen fuer jeden User in welche er Dateien ablegen kann (auf diese er spaeter auf dem System zugreifen koennen soll), kannst du entweder das professionellere mit den ACLs machen oder einfach (dafuer unschoener):

groupadd user1grp
useradd -m -s /bin/bash -G user1grp -d /home/user1 user1
( passwd user1 )
mkdir /var/www/html/user1-upload
chown <apacheuser>:user1grp /var/www/html/user1-upload
chmod g+rws /var/www/html/user1-upload

Das _sollte_ so klappen.. ich bin ein bisschen Solaris-getuned wegen meinem Job, sollte aber so auch auf Linux funktionieren. Natuerlich sollte die Webapplikation den User zuerst richtig Authentifizieren etc. .

-> nochmals: die Kommandos kommen aus dem Kopf und sind ungetestet. Fehler moeglich.


Dank dir ... Da habe ich einen Ansatz ...

tr0nix
12.10.2005, 09:11
Wenn du eine Erlaeuterung brauchst zu einer der Vorgehensweisen sags einfach ;)

theton
26.10.2005, 03:21
Also erstmal zu tuxer:
-rw-r--rw- 1 tuxer users 249 2003-11-16 18:03 beispiel.txt <- das ist _garantiert_ nicht die Loesung world-writable-Dateien im Webserver zu haben ist die Sicherheitsluecke schlechthin (auch wenn du der Meinung bist, dass die Daten evtl. eh nicht wichtig sind, solltest du dir angewoehnen world-writable-Dateien im System so weit wie moeglich zu vermeiden :oldman ).

Die Loesung eures Problems ist ganz einfach...
Entweder ihr lasst den Server mit den Rechten eures normalen Users laufen (kann man in der httpd.conf ja wunderbar einstellen) oder ihr legt eine Gruppe an, unter der der Apache laeuft und fuegt euren User dieser Gruppe hinzu. Und da die neu angelegte Datei auch dem Webserver gehoert, macht ihr einfach ein <? exec("chmod g+w <datei>"); ?> und schon hat euer User read-write-Rechte fuer die Datei.

PS: sollte es mit exec() nicht funktionieren, probiert einfach mal system().