Wenn Sie über ein CGI-Skript (z.B. Perl oder PHP) eine Datei auf dem Server anlegen, so wird diese aus Sicherheitsgründen mit den Rechten 600 angelegt, damit nur Ihre Skripte darauf Zugriff haben.
Dieses Sicherheitsfeature gewährleistet beispielsweise, dass Sessiondateien oder Plaintext-Datendateien nur von Ihnen ausgelesen werden können. Der Webserver läuft unter einem anderen Linux-Benutzer als Ihre Skripte, jedoch in der selben Gruppe. Da die Rechte 600 jedoch der Gruppe keinerlei Berechtigungen einräumen, kann der Apache-Server folglich auch die Bilddatei nicht lesen und ausgeben.
Die Lösung:
Sie müssen in Ihrem Skript der Datei daher nach dem Upload Leserechte für die Gruppe 'nobody' einräumen, damit das Bild im Browser angezeigt werden kann. Die richtige Rechtevergabe hierfür ist 640.
Ein Beispiel anhand der Skriptsprache PHP:
Üblicherweise wird das hochgeladene Bild mit dem Befehl move_uploaded_file ($uploadfile, $zieldatei) im Zielverzeichnis angelegt. Die Rechtevergabe fügt man am besten gleich im Anschluss hieran über folgenden Befehl ein:
chmod ($zieldatei, 0640); ("$zieldatei" dient hier lediglich als Beispiel und muss an das von Ihnen verwendete Skript angepasst werden)
Es gibt zahlreiche, häufig verwendete Anwendungen, die eine wie oben beschriebene Anpassung erfordern. Zu nennen ist hier beispielsweise das Shopsystem "OS Commerce".
Aufgrund der nahezu unendlichen Zahl an verfügbaren Skripten bitten wir um Ihr Verständnis, dass wir Ihnen an dieser Stelle leider keine Informationen über die exakte Stelle Ihres Skriptes nennen können, an welcher der chmod-Befehl eingefügt werden muss. Bitte durchsuchen Sie bei Bedarf einfach alle php-Skripte nach der Zeichenkette "move_uploaded_file", um die richtige Stelle(n) zu finden.
Zielgerichteter können Sie vorgehen, indem Sie die action-Angabe des FORM-Tags des Upload-Formulars ermitteln und dieses Zielscript durchsuchen und abändern. Das erfordert jedoch moderate HTML- und PHP-Kenntnisse.
Weitere Informationen finden Sie in der offiziellen PHP-Dokumentation zu den Befehlen "move_uploaded_file()" und "chmod()":