Zugriff auf Dateien schlägt fehl

  • Guten Tag,
    ich betreibe einen Debian V-Server auf dem ich einen Apache 2 betreibe. Es klappt soweit alles wunderbar sobald ich einen User anlege erstellt ein ein Userverzeichniss in dem sich ein Ordner public_html befindet. Wenn ich dann eine Datein in den Ordner laden kann dich diese auch sehen unter http://ip/~user/datei.jpg . Wenn ich dann aber auf die Datei klicke mir also downloaden will kommt folgende Fehlermeldung:
    "Zugriff verweigert!


    Der Zugriff auf das angeforderte Objekt ist nicht möglich. Entweder kann es vom Server nicht gelesen werden oder es ist zugriffsgeschützt.


    Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
    Error 403"


    Im Errorlog vom Apache erscheint folgendes:


    "(13)Permission denied: file permissions deny server access: /home/testuser/public_html/a-class_fallback.jpg"


    Wodran kann das liegen? Wo kann ich die Berechtigung so umbiegen das das automatisch umgestellt bzw. eingestellt wird beim Erstellen eines neuen Users...

  • Lade die Dateien mit FileZilla hoch. Aber das kann man doch irgendwie ändern in der Apache Config oder so. Das die User in eine Gruppe kommen wo das alles automatisch funktioniertd as ich alles lesen kann :)




    total 152
    124425 4 drwxr-xr-x 2 testuser users 4096 Feb 26 12:51 .
    124417 4 drwxr-xr-x 7 testuser users 4096 Feb 26 12:50 ..
    124426 4 -rw-r--r-- 1 testuser users 48 Feb 26 12:50 .directory
    124430 140 -rw------- 1 testuser users 135852 Feb 26 12:51 starker_hund.jpg

  • Das liegt an den Rechten der Datei. Der Webserver läuft als user "www-data" (Im normalfall).
    Und mit den aktuellen Rechten darf dieser nicht auf die File zugreifen.

    Code
    chmod u=rwx,g=rw,o=rw datei.jpg

    sollte das Problem lösen.
    Ansonsten mal in die FTP konfig reinschauen, und die umask anpassen, dass gleich beim Upload die richtigen Rechte gesetzt werden.


    Entweder den obrigen chmods, oder als gruppe www-data, und dann mit u=rwx,g=rw,o=-

  • Hallo,
    der Apache läuft mit dem User wwwrun


    Code
    wwwrun    3730  0.0  0.5   8940  2600 ?        S    12:51   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
    wwwrun    3731  0.0  0.4   8936  2568 ?        S    12:51   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
    wwwrun    3732  0.0  0.4   8936  2548 ?        S    12:51   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
    wwwrun    3733  0.0  0.5   8940  2580 ?        S    12:51   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
    wwwrun    3734  0.0  0.4   8936  2496 ?        S    12:51   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
    wwwrun    3768  0.0  0.5   8940  2584 ?        S    12:55   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
    wwwrun    3769  0.0  0.4   8940  2544 ?        S    12:55   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
    wwwrun    3770  0.0  0.5   8940  2596 ?        S    12:55   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf
    wwwrun    3778  0.0  0.5   8936  2588 ?        S    12:56   0:00 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf


    FTP Konfig anpassen bringt mir nicht viel aus folgendem Grund. Ich mounten später in den Ordner public_html eine Netzlaufwerke damit ich von außerhalb auf meine Daten zugreifen kann.


    Und möchte ja nicht immer für jede Datei die Berechtigungen setzen. Kann man das Problem irgendwie anders lösen? Ich meine man kann doch bestimmt da was in der Apache Konfig was umstellen....

  • Wie sim4000 schon korrekt aus der Fehlermeldung herausgelesen hat, liegt das Problem auf Dateiebene, der Apache-Benutzer (bei dir komischerweise wwwrun, das ist nicht Debian-Standard) hat nicht die nötigen Zugriffsrechte auf die Datei. Die Zeile bedeutet, dass der Besitzer (testuser) die Datei lesen (r) und schreiben (w) kann, aber sie nicht ausführen (x). Letzteres ist auch nicht nötig, es ist ja kein Shell-Skript. Die Gruppe (users) und der Rest der Welt (sprich auch dein Apache) haben aber keinerlei Zugriffsrechte. Daher müsste die Datei mindestens lesbar für alle sein, oder du steckst den Apache mit in die Gruppe users und gibst der Gruppe Leserechte. Ich würde aber ersteres empfehlen. Der Befehl dafür steht zwei Beiträge weiter oben, in Kurzschreibweise

    Code
    chmod 755 datei.jpg


    Ansonsten werden die Standardrechte beim Anlegen neuer Dateien soweit ich weiß mit umask festgelegt. Wenn ich einfach "umask" ausführe, erscheint bei mir "0022", was 777 (alle Rechte für jeden) minus 755 ist. Proftpd hat da aber eine eigene Einstellung für.


    Was mir aber gerade auffällt: Welche Datei rufst du denn auf? Im Errorlog steht ja eine andere Datei als in deinem Beispiel. Wird da irgendwas per mod_rewrite umgeschrieben? Und hast du eigentlich Debian oder Open Suse? ;)

  • Hallo,
    hatte mich verschrieben. Ist ein Open Suse 11.0 System.


    Eine Frage habe ich noch...
    [FONT=&quot]Ich habe den User wwwrun jetzt in die Gruppe users gesteckt. Wie kann ich dann jetzt der Gruppe users Leserechte geben bzw. worauf genau?[/FONT]

  • Code
    chmod u=rwx,g=rw,o=- datei.jpg

    Dann könnte der Webserver die Datei lesen.
    Das müsste mit jeder Datei/jedem Ordner gemacht werden, der Aufrufbar sein soll.
    Kannste wie gesagt Automatisiert mit umask machen.

    Code
    man umask


    //edit
    Wenn Du einen Ganzen Order inkl Unterverzeichnisse und Unterdateien Zugreifbar machen willst, kannste einfach ein "-R" nach dem "chmod" hinzufügen. Sprich so:

    Code
    chmod -R u=rwx,g=rw,o=- /verzeichnis/.../.../
  • Guten Morgen,
    sobald ich

    Code
    chmod -R u=rwx,g=rw,o=- /home/testuser/public_html

    Eingebe, kann ich überhaupt nicht mehr auf den Webserver zugreife bzw. auf den Webspace des Users...



    Mit dem man umask klappt es wunderbar da funktioniert es also mit hochgeladenen Dateien. Problem ist aber, ich mounte ein Netzlaufwerk von meinem Fileserver in den Ordner. Ich kann dann zwar die Dateien sehen aber wenn ich sie downloaden sind sie 0 kb groß :(

  • Ist ja egal was ich mounte. Kann ja auch eine andere Platte reinmounten. Bloß das funktioniert nicht.


    Habe das nur als Beispiele geschrieben mit FileServer, damit man sich das besser vorstellen kann.


    mount -t cifs //ip/networkshare /var/www/localhost/public_html-o username=user,password=geheim

  • Nur mal so nebenbei: Nutzt du echt online einen Sambaserver?
    Das würde ich lassen. Den knacken dir die Asiaten schneller als du Internet Protocol sagen kannst, wenn die deinen Server gefunden haben.
    So etwas sollte man immer mit einer VPN Verbindung schützen.


    Zu deinem Problem: Wenn Du Samba Shares einbindest, kann es auch am Samba Server liegen.
    Zeig mal bitte die Ausgaben von

    Code
    ls -lisa /home/user/public_html

    Damit man nun mal die Rechte sehen kann. Die Dateinamen kannste von mir aus verfälschen.
    Mit welchem User wird nun der Webserver ausgeführt, und welche Gruppenzugehörigkeiten hat dieser?


    Fastfix:

    Code
    chmod -R u=rwx,g=rw,o=rx /home/testuser/public_html

    Danach sollte der Zugriff wieder gehen. Da scheint noch irgendwas mit den Gruppenzugehörigkeiten nicht zu stimmen.

  • Also momentan test ich das folgendes. Ich habe einen V-Server mit OpenSuse. Darauf läuft ein Webserver und FTP.
    Ich teste eine andere Partition in das Webverzeichnis eines User zu mounten. Das verzeichniss wird später mit htaccess geschützt. Meinst du das ist unsicher?


    Später soll es dann so sein das ich zu Hause meine Netzlaufwerke von meinem Fileserver in die Webuserverzeichnisse mounte und darauf zugreifen kann.

  • Samba ist nicht für das Internet gedacht. Das ist ja genau so eine Schnapsidee als einen Drucker ins Internet freizugeben.
    Das wird nicht lange dauern, dann wird die Samba Log mit Hack-Versuchen geflutet.
    Wie gesagt. Man sollte sowas über einen VPN Tunnel schützen. Dann ist man "so gut wie" sicher.


    Ein Netzlaufwerk auf einem Webserver als Webverzeichnis zu nutzen habe ich noch nie versucht. Kann also nicht sagen, in wie fern das Funktionieren wird. Aber ich habe glaub ich den Fehler gefunden.

    Zitat von V-Einsteiger
    Code
    mount -t cifs //ip/networkshare /var/www/localhost/public_html-o username=user,password=geheim

    Da fehlen noch die UID und GID, mit dem du die Gemountete Samba Share einem Lokalen Benutzer zuteilst. Der Befehl müsste so aussehen:

    Code
    mount -t cifs //ip/networkshare /var/www/localhost/public_html -o user=meinusername,pass=meinpassword,gid=1000,uid=1000,codepage=cp850,iocharset=utf8"

    Die GID 1000 und die UID 1000 musst du noch durch die Passenden von testuser und der gruppe users ersetzten. Die findest du in /etc/passwd und /etc/group. Zusätzlich habe ich noch zwei Optionen angegeben, damit auch Umlaute richtig dargestellt werden. Da hatte ich schon mal Probleme mit.
    Wenn Du alles richtig machst beim Mounten, sollten dann die Daten aus dem Netzwerk Share dem User und der Gruppe von public_html angehören, und es sollte alles gehen.


    Zitat

    Meinst du das ist unsicher?

    htaccess an sich ist nicht unsicher. Nur die Samba Verbindung zwischen VServer und Fileserver. Die direkte, offene Verbindung solltest du unter allen Umständen vermeiden. Dein Stichwort ist dabei halt openVPN.

  • Mh habe jetzt mal einen neuen User angelegt Names: Schatz
    In der passwd steht folgendes -> schatz:x:1000:100:Schatz:/home/schatz:/bin/bash


    Und yast hat mir gesagt das der User "Schatz" in der Gruppe users ist und in der group Datei steht folgendes-> users:x:100:


    Code
    mount -t cifs //192.168.0.15/Schatz /home/Schatz/public_html -o user=Administrator,pass=meinpw,gid=1000:100:,uid=x:100:,codepage=cp850,iocharset=utf8"


    Habe den Code dann so geänder aber funktioniert nicht :(

  • Zitat

    Wie kann ich das eigentlich wieder unmounten?

    Code
    man umount

    ;)


    Ich würde dir echt empfehlen, dich mal son bissl in Linux einzulesen.

    nach dem einbinden sieht das bei mir so aus.
    Wäre schon, wenn Du die geforderten ausgaben mal Posten würdest. (Hab ich glaub ich schon vor zwei Posts danach gefragt.)