Apache und PHP

tuxer

tuxer

Music-Fan
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
 
moin

chown tuxer <datei>

chgrp users <datei>


Gruß HL
 
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
 
tuxer schrieb:
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
 
>schon mal die php configfiles abgegrasst?
Ja, habe ich. Ich kann allerdings nicht viel damit anfangen
;(

Gruß
Tuxer
 
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
 
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ß!
 
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 ?
 
Îch würds mit einer .htaccess-Datei probieren. Inhalt:
Group users


Kenne allerdings die genauen Configs des Apache nicht.
 
proggi schrieb:
Î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 ...
 
@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.
 
Zuletzt bearbeitet:
tr0nix schrieb:
@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 ...
 
Wenn du eine Erlaeuterung brauchst zu einer der Vorgehensweisen sags einfach ;)
 
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().
 
Zuletzt bearbeitet:

Ähnliche Themen

chown Befehl in einem Script

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

PHP funktioniert, nur Web-Aufrufe mit Optionen nicht.

Hilfe für ein shell script

Nginx als Reverse Proxy für Nextcloud und Emby

Zurück
Oben