PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : APACHE - Rechteproblem



IceEagle
21.10.05, 19:36
Hallo!

Ich habe das folgende Problem auch schon auf MRUNIX beschrieben, weil ich es für einen Programmierfehler gehalten habe...

Passt aber scheinbar doch mehr in richtung Server-Configuration:

Also ich habe einen SuSE Linux 9.0 - Server mit MySQL-Datenbank und APACHE Server.

Kernel: 2.4.21.297-athlon
PHP 4.3.3 (cgi) (built: Sep 1 2005 18:13:43)
MySQL Ver 12.21 Distrib 4.0.15, for suse-linux (i686)

Ich habe eine UPLOAD-Site errichtet, damit fing das ganze Problem an.
Ich kann Daten aus dem HTDOCS heraus auswählen und uploaden. Läuft alles einwandfrei, daher schonmal kein Fehler im PHP-Script.

Außerdem, als Hintergrund, die gleiche DB-Structur mit samt der gesamten PHP-Seiten läuft auf Windows XP mit PHP-My-ADMIN einwandfrei, auch diese Sache mit dem Upload.

Aber unter LINUX, wenn ich da aus meinem persönlichem Ordner eine Datei, wie etwa ein Bild auswähle, selbiges wie beim späteren Test unter Windows und auch von Linux aus unter HTDOCS erfolgreich,
so geht es nicht aus einem persönlichem Ordner.

Permission denied!!! Stream error...

Das ganze wird von PHP via COPY - Befehl hoch geladen.
Aber um dies auch aus anderen Verzeichnissen als von HTDOCS zu ermöglichen, muss ich noch ein fehlendes Recht zuweisen, wie mir scheint.
Das hat nichts mit CHMOD 777 zu tun, die Zielverzeichnisse sind so schon eingerichtet.

Aber das Erlauben, auch aus anderen Verzeichnissen Dateien einzulesen fehlt mir.
Wo und wie genau kann ich das anstellen, dass es geht? Hat da jemand eine Idee?

Ich hab schon die gesamte httpd.conf aus dem Verzeichnis /etc/apache durchgescannt, aber ich finde da nichts...
im /etc/apache2 finde ich auch nichts, was danach aussieht.

Auch von einem über Netzwerk verbundenem Windows PC, der auf das PHPScript des Linux-Servers zu greift, ist es nicht möglich, eine Datei hoch zu laden.

blueunderground
22.10.05, 00:04
Moin,

zum besseren Verständnis für alle hier, wo erhälst Du denn eine Fehlermeldung ?
Ist es eine vom Apache, oder durch PHP erzeugte ?

Wie sind die genauen Benutzer, Rechte ?

Erinnere mich das man auch bei PHP den upload von Files sperren kann.
Kannst Du vielleicht das Log posten wie sie erscheint um mehr Info zu erhalten.

Danke
Blue

IceEagle
22.10.05, 06:05
Im Log habe ich mal geschaut, da finde ich keine Informationen darüber.
/var/logs/apache2/error_log
/var/logs/httpd/error_log

Man kann in PHP den Upload auf zwei verschiedene Weisen ausführen, wie ich herausgefunden habe:

@COPY
COPY

Beim ersteren wird keine Fehlermeldung angezeigt, er kopiert es nur einfach nicht und man sieht nicht, was schief gelaufen ist.

Beim zweiten ohne @ kommt aber die Fehlermeldung direkt im Browser, wie auch SQL-Fehler, wenn man welche hätte, wie man das so von PHP kennt.
Es ist direkt im Browser an der Stelle, wo er das COPY ausgeführt hat. Danach läuft das PHP-Script bis zum Ende weiter.

IF (@copy($SourceFile,$Path."/".$DestFileName))
IF (copy($SourceFile,$Path."/".$DestFileName))

Variablen sind wie folgt gefüllt, rechts daneben die Verzeichnisrechte)

$Path = /srv/www/htdocs/Projekt1 (CHMOD 777)
$SourceFile = /home/IceEagle/01.jpg (CHMOD 700)
$DestFileName = 54053010622-31.jpg

Warning: copy(/home/IceEagle/01.jpg): failed to open stream: Permission denied in /srv/www/htdocs/Projekt1/upload.php on line 289


Das Copy gibt false, denn er führt nicht aus, was in dem Zweig steht.

Im Ziel-Path sind also keine Rechteeinschränkungen, nur das Sourcefile steht lediglich dem aktuellem Benutzer zur Verfügung. Ändere ich die Rechte auf 777 geht das natürlich auch, das hab ich schon getestet, aber das ist doch im Internet bei anderen UPLOAD-Seiten auch nicht anders. Ich verwende da das gleiche Bild und das geht bei denen doch auch, weil ich mit dem aktuellem Benutzer drauf zu greife.
Außerdem kann ich schlecht dem Bild das Recht 777 zuweisen, weil, mal angenommen, jemand von Euch hier will in diesem Forum einen Dateianhang machen, dann würde er doch dem Bild und dem Verzeichnis nicht auch noch zusätzlich Rechte zuweisen. Ihr habt doch auch schon das recht auf das Bild im eigenem Verzeichnis..

Das Bild, was ich hier nun angehängt habe, das ist exact das Bild:
/home (755) ROOT ROOT OTHER
/home/IceEagle (700) IceEagle ROOT OTHER
/home/IceEagle/01.jpg (600) IceEagle ROOT OTHER

LinuxForen.de kann es ja auch uploaden, weil ich als IceEagle habe ja das Recht, dieses Bild zu lesen und zu ändern, damit auch zu kopieren. Es braucht nicht das Recht 555 oder so.
Aber mein Apache würde es nur kopieren, wäre es 555.
Das ist merkwürdig.
Und unter Windows kann ich somit auch nicht mittels Netzwerkzugriff auf den LinuxServer etwas hoch laden. Da kann ich sowas wie 555 garnicht machen. Und das ist halt das, wo es am Ende zum tragen kommt. Es muss ja von überall aus gehen.