• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Eigentümer nach kopieren über PHP-Script

Hallo,

ich habe das Problem, das ich nicht weiß was ich in der /etc/samba/smb.conf eintragen muss, wenn ich möchte, das Daten die ein PHP-Script über apache2 kopiert hat bestimmte Rechte und einen bestimmten Owner haben. Bin ich da an der richtigen Stelle?

Die Datein sehen nach dem Upload wie folgt aus.
-rw------- 1 wwwrun www 822321 Aug 14 17:31 1187105486.jpg

Es handelt sich um einen privaten nur intern benutzen Webserver.

Bitte verschieben und umbenennen, wenn ich hier im falschen Forum bin !!!
Danke
 
OP
ddode
So ist die momentane Konfiguration
Code:
[webserver]
   comment = Webserver Lokal
   path = /srv/www/htdocs
   read only = No
   inherit acls = No
   admin users = david
Das habe ich hinzu gefügt
Code:
   create mode = 0745
   directory mode = 0777

Anschliessend SMB neu gestartet. Aber es hat nichts geändert.
 
ddode schrieb:
ich habe das Problem, das ich nicht weiß was ich in der /etc/samba/smb.conf eintragen muss, wenn ich möchte, das Daten die ein PHP-Script über apache2 kopiert hat bestimmte Rechte und einen bestimmten Owner haben. Bin ich da an der richtigen Stelle?
Nein, dein Webserver läuft unprivilegiert, und daher können Dateien ohne weiteres nur als wwwrun erstellt werden. Die Rechte legt PHP mittels umask und/oder chmod fest.
 
OP
ddode
Gut.
Wie kann ich das ändern? Es ist ja nicht normal, das eine hochgeladene Datei im Internet diese Rechte verpasst bekommen. Da kan ich doch bestimmt irgendwas einstellen.
Wo und Was? Das wäre super wenn mir das jemand sagen kann.
 
ddode schrieb:
Es ist ja nicht normal, das eine hochgeladene Datei im Internet diese Rechte verpasst bekommen.
Doch, das ist normal. Eine Datei die via HTTP auf den Server gelangt wird mit vollen Zugriffsrechten für den HTTP Server gespeichert, damit ist dieser berechtigt die Datei auch wieder auszuliefern - sonst niemand.

Eine Änderung ist nur auf Applikationsebene möglich (also letztendlich im PHP Skript), indem (wie von jengelh genannt) mit chmod() die Zugriffsrechte erweitert werden.

Eine andere Möglichkeit wäre die Dateien per HTTP (also eben nicht per Samba ) abrufbar zu machen.
 
Moin ...

ich denke du suchst eher so etwas wie "force user" und "force group" ...

Siehe auch -> http://lug.krems.cc/docu/samba/ch05_03.html

Kapitel : "5.3.1 Masken für die Erzeugung von Dateien"

So long

ThomasF
 
OP
ddode
ThomasF schrieb:
...

ich denke du suchst eher so etwas wie "force user" und "force group" ...

Funktioniert leider auch nicht.
So ganz versteh ich das Prinzip noch nicht. Wenn ich über HTTP per PHP-Script auf dem Webserver Daten ablege, warum kann dann das selbe Script auf diese Daten nicht mehr zugreifen? Auf dem richtigen Webserver geht das gleiche Script. Auf mehrerern anderen im übrigen auch. Also liegt es nicht am Script.

Bitte klärt mich über diesen Vorgang des Dateiuploads auf. Ich bin auch am zweifeln, das die Samba-Freigabe damit etwas zu tun hat.
 
ddode schrieb:
Wenn ich über HTTP per PHP-Script auf dem Webserver Daten ablege, warum kann dann das selbe Script auf diese Daten nicht mehr zugreifen?
Dieses Problem ließ sich im OP nicht erkennen.
Sofern das Script vom selben Benutzer gestartet wird sollte genau dieses funktionieren, siehe Dateirechte im OP:
rw für User wwrun:www

ddode schrieb:
Ich bin auch am zweifeln, das die Samba-Freigabe damit etwas zu tun hat.
Das bezweifele ich auch ...
 
> Die Datein sehen nach dem Upload wie folgt aus.
> -rw------- 1 wwwrun www 822321 Aug 14 17:31 1187105486.jpg

Prüfe mal mit welchem User der Webserver laeuft.
(evtl. ja auch mit nobody oder demon)

Prüf auch mal die default umask.

Evtl. laeuft bei dir das PHP im safe mode läuft. (siehe php.ini)

Gruß Dominik
 
OP
ddode
Leviathan schrieb:
>
Prüfe mal mit welchem User der Webserver laeuft.
(evtl. ja auch mit nobody oder demon)
Leider weiß ich nicht wie. In der /etc/passwd steht wwwrun :...:WWW daemon apache
Leviathan schrieb:
>
Prüf auch mal die default umask.
Evtl. laeuft bei dir das PHP im safe mode läuft. (siehe php.ini)
umask ist unangetastet (0022)
safemod ist off[/quote]
 
Ich würde das Thema mal eher zu "LAMP-Webserver XAMPP" verschieben ... hat ja wohl doch nichts mit "Samba" zu tun.
 
Den User kannst du mit u.a. mit

ps auxf|grep httpd

auslesen. 1. Spalte.

Wenn der User nicht wwwrun ist, kannst du die Datei
-rw------- 1 wwwrun www 822321 Aug 14 17:31 1187105486.jpg

nicht lesen. Den User kannst du in der httpd.conf ändern. Die Option ist:

User daemon

Wenn das nix bringt würde ich mir nochmal die fopen Funktion ansehen.

Gruß Dominik
 
OP
ddode
Leviathan schrieb:
ps auxf|grep httpd
Ausser in der ersten von 5 Zeilen die zum Appache stehen, steht wwwrun als User. In der ersten steht root.
Leviathan schrieb:
Den User kannst du in der httpd.conf ändern. Die Option ist:
User daemon
Hab diese Einstellung gefunden, in der uid.conf. Da steht aber
Code:
User wwwrun
Group www
Ist das richtig?
 
Morgen,

das mit dem user wwwrun passt alles.

Probier mal bitte die Funktion:

http://de.php.net/manual/de/function.umask.php

Wenn das nix bringt, hab ich keine Ideen mehr :>,
ausser schrittweise an das Problem heranzugehen (sprich, Datei erstmal nicht im Sambashare erstellen)

Gruß Dominik
 
Benutz doch suphp (+ fast-cgi) auf dem WebServer.
Dann kann das PHP-Script (bzw. der VHost), das den Upload durchführt unter einer separaten Userkennung laufen.

Allerdings frage ich mich was das mit Samba zu tun hat.
Soll die Datei dann via Samba abrufbar sein?
Dann erstelle einen User (am besten ohne Shellzugriff) inkl. Samba-Account unter dem das PHP-Script (s.o.: suphp) läuft und gib das entsprechende Verzeichnis via Samba frei.

Oder regel den Zugriff auf die Datei(en) via WebDav - das ließe sich nur mit den Apache (= ohne Samba) realisieren.
 
Oben