Tom: public_html-Verzeichnisse sind nicht mehr zugänglich

Hello,

îch habe mir auf einem Apache-Server irgendwas verpfriemelt und finde es nicht...

Die public_html-Verzeichnisse der User, die üblicherweise unter

http://machine.domain.tld/~username/

erreichbar sind, sind nicht mehr zugänglich. Ich habe schon alles mögliche überprüft, finde aber nichts.

  • x-Rechte auf Homedirs durchgängig für Apache vorhanden
  • rw Rechte zusätzlich für die betroffenen Dirs für Apache vorhanden

<IfModule mod_userdir.c>
#     UserDir disable
     UserDir public_html
</IfModule>

Im errorlog steht auch nur der lakonische Satz

[Sat Jul 30 20:03:22 2005] [error] [client 213.54.81.67] (13)Permission denied: access to /~tschmieder/xxxx/xxxx.php denied

Fehlermeldung am Client:
You don't have permission to access /~tschmieder/xxxx/xxxx.php on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

Irgendwie weiß ich nicht, was ich da verkurbelt haben soll. Ich habe lediglich vor ein paar Tagen ein zusätzlichen VirtHost hinzugefügt. Der läuft auch einwandfrei.

Die Scripte konnte ich bisher immer aufrufen.
Leider habe ich das nicht sofort gemerkt, dass es nicht mehr funktionioniert...

Wer weiß Rat?

Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
  1. hallo Tom,

    Ich habe lediglich vor ein paar Tagen ein zusätzlichen VirtHost hinzugefügt. Der läuft auch einwandfrei.

    Und hat dir offensichtlich bei der Gelegenheit ein paar andere Stellen schlicht überschrieben.

    Wer weiß Rat?

    Ich natürlich *g*

    Stell deine httpd.conf oder wenigstens den virtHost mal online. Da muß es ja einen Konflikt geben. Und was passiert denn, wenn du diesen virtHost temporär wieder deaktivierst?

    Grüße aus Berlin

    Christoph S.

    1. Hello,

      Stell deine httpd.conf oder wenigstens den virtHost mal online.

      nicht so gerne. Dann müsste ich sie erst "putzen" und das würde doch wieder die Randbedingungen verändern.

      Da muß es ja einen Konflikt geben. Und was passiert denn, wenn du diesen virtHost temporär wieder deaktivierst?

      Da passiert auch nichts sinnvolles.

      Es muss mit der Aulösung des Pfades

      /~Username/

      auf

      /home/Username/public_html

      zu tun haben. Es steht aber alles wie beschrieben eingetragen und wurde von mir auch ganz bestimmt nicht verändert. Meine letzte Sicherung der httpd.conf ist vom 01.06.2005. Ich werde die mal wieder in Kraft setzen und schauen, ob es dann wieder funktioniert.

      Dann müsste der Fehler ja zu finden sein.

      Melde mich gleich nochmal

      Harzliche Grüße vom Berg
      esst mehr http://www.harte-harzer.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hello,

        Ich werde die mal wieder in Kraft setzen und schauen, ob es dann wieder funktioniert.

        habe ich gerade gemacht.
        Keine der alten Versionen führt zum gewünschten Effekt, selbst die aus dem letzten Jahr nicht.

        Der Fehler muss also woanders stecken. Also ggf. doch in der Rechtestruktur.

        Habe ihn gefunden, aber noch nicht verstanden...

        Ist der Apache nicht automatisch Mitglied von "others"?

        Ich habe das x-Recht nun für eine Gruppe, in der die User und der Apache sind, auf die Home-Dirs vergeben. Nun funktioniert es wieder.

        *zz*

        Harzliche Grüße vom Berg
        esst mehr http://www.harte-harzer.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. hallo Tom,

          Habe ihn gefunden

          Schön für dich.

          aber noch nicht verstanden...

          Weniger schön, kommt aber sicher sehr, sehr häufig vor.

          Ist der Apache nicht automatisch Mitglied von "others"?

          Nö. Automatisch ist er überhaupt kein Mitglied. Er startet aber grundsätzlich erstmal einen Prozeß als "root" und kann dann Child-Prozesse an andere User abgeben.

          Ich habe das x-Recht nun für eine Gruppe, in der die User und der Apache sind, auf die Home-Dirs vergeben. Nun funktioniert es wieder.

          Siehst du, das verstehe ich auch nicht so richtig ...

          Grüße aus Berlin

          Christoph S.

          1. Hello Christoph,

            Ist der Apache nicht automatisch Mitglied von "others"?

            Nö. Automatisch ist er überhaupt kein Mitglied. Er startet aber grundsätzlich erstmal einen Prozeß als "root" und kann dann Child-Prozesse an andere User abgeben.

            Und als User, unter dem die Child-Prozesse laufen, ist z.B. "wwwrun" eingetragen und als Default-Group "wwwrun". Außerdem ist der User wwwrun noch Mitglied in diversen Supplemental Groups.

            Es gibt eine, in der auch die berechtigten User Mitglied sind, nennen wir sie "websites".

            Wenn ich jetzt für das /home - Verzeichnis

            user  websites (others)
                rwx   ---      --x

            eingestellt habe, dann gehe ich eigentlich davon aus, dass User "wwwrun" das Verzeichnis in den Pfad aufnehmen darf. Oder wodurch ist das ggf. noch beschränkt?
            Haben ggf. nur die User mit gültiger Shell auch die Rechte von others?

            Siehst du, das verstehe ich auch nicht so richtig ...

            Und ich hatte so fest an Dich geglaubt ;-)

            So funktioniert es jedenfalls:

            user  websites (others)
                rwx   --x      --x

            Harzliche Grüße vom Berg
            esst mehr http://www.harte-harzer.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Moin!

              Nö. Automatisch ist er überhaupt kein Mitglied. Er startet aber grundsätzlich erstmal einen Prozeß als "root" und kann dann Child-Prozesse an andere User abgeben.

              Das ist nicht 100% korrekt. Der Apache startet als root, nimmt dann aber komplett die UID an, die in der Konfig-Datei angegeben ist, und "kann" dann nicht Child-Prozesse an andere User abgeben, sondern "muss" Child-Prozesse als der geänderte Apache-User ausführen. Nur mit äußeren Mitteln wie suexec kriegt man den ausführenden User eines Prozesses dann geändert.

              Und als User, unter dem die Child-Prozesse laufen, ist z.B. "wwwrun" eingetragen und als Default-Group "wwwrun". Außerdem ist der User wwwrun noch Mitglied in diversen Supplemental Groups.

              Zum Beispiel "websites"?

              Wenn ich jetzt für das /home - Verzeichnis

              user  websites (others)
                  rwx   ---      --x

              eingestellt habe, dann gehe ich eigentlich davon aus, dass User "wwwrun" das Verzeichnis in den Pfad aufnehmen darf. Oder wodurch ist das ggf. noch beschränkt?

              Wenn der Apache (oder irgendein Teil, welches unter anderer UID/GID läuft, aber für den Zugriff notwendig ist) Mitglied der Gruppe "websites" ist, dann darf er das Verzeichnis nicht betreten.

              Haben ggf. nur die User mit gültiger Shell auch die Rechte von others?

              Nein. "Others" sind alle, die "nicht der User" sind, und "nicht Mitglied der Gruppe" sind.

              Daraus folgt: Wenn der Apache mit obigen Rechten keinen Zugriff kriegt, ist er Mitglied der Gruppe.

              So funktioniert es jedenfalls:

              user  websites (others)
                  rwx   --x      --x

              Es scheint mir heftig unsinnig, für die Gruppenrechte weniger Erlaubnis zu erteilen, als für die "others". Normal sollte sein, dass in der Reihenfolge User-Gruppe-Andere immer weniger Rechte, höchstens identische, vergeben sind.

              - Sven Rautenberg

              1. Hello,

                Und als User, unter dem die Child-Prozesse laufen, ist z.B. "wwwrun" eingetragen und als Default-Group "wwwrun". Außerdem ist der User wwwrun noch Mitglied in diversen Supplemental Groups.

                Zum Beispiel "websites"?

                Wenn ich jetzt für das /home - Verzeichnis

                user  websites (others)
                    rwx   ---      --x

                eingestellt habe, dann gehe ich eigentlich davon aus, dass User "wwwrun" das Verzeichnis in den Pfad aufnehmen darf. Oder wodurch ist das ggf. noch beschränkt?

                Wenn der Apache (oder irgendein Teil, welches unter anderer UID/GID läuft, aber für den Zugriff notwendig ist) Mitglied der Gruppe "websites" ist, dann darf er das Verzeichnis nicht betreten.

                Haben ggf. nur die User mit gültiger Shell auch die Rechte von others?

                Nein. "Others" sind alle, die "nicht der User" sind, und "nicht Mitglied der Gruppe" sind.

                Ja danke: das hatten wir doch schon einmal. Ich erinnere mich dunkel

                Daraus folgt: Wenn der Apache mit obigen Rechten keinen Zugriff kriegt, ist er Mitglied der Gruppe.

                So funktioniert es jedenfalls:

                user  websites (others)
                    rwx   --x      --x

                Es scheint mir heftig unsinnig, für die Gruppenrechte weniger Erlaubnis zu erteilen, als für die "others". Normal sollte sein, dass in der Reihenfolge User-Gruppe-Andere immer weniger Rechte, höchstens identische, vergeben sind.

                Das war ja auch ein Konfigurationsfehler, der durch irgend eine benebelte Handlung entstanden ist. Zum Glück habe ich ja noch wiedergefunden, was ich irgendwann  mitten in der Nacht geändert hatte...

                Um das nochmal auf den Punkt zu bringen: Man kann also einen User aussperren, weil er Mitglied einer bestimmten Gruppe ist. Indem man das File einfach genau dieser Gruppe zuweist und der die Rechte entzieht, kann der User nicht mehr zugreifen, es sei denn er wäre jetzt auch Owner.

                Harzliche Grüße vom Berg
                esst mehr http://www.harte-harzer.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Moin!

                  Um das nochmal auf den Punkt zu bringen: Man kann also einen User aussperren, weil er Mitglied einer bestimmten Gruppe ist. Indem man das File einfach genau dieser Gruppe zuweist und der die Rechte entzieht, kann der User nicht mehr zugreifen, es sei denn er wäre jetzt auch Owner.

                  Oder er entzieht sich der Gruppenzugehörigkeit und könnte dann als "others" zugreifen.

                  Ich habe zuwenig Ahnung, was GID-mäßig technisch möglich ist, würde als Pessimist aber vermuten, dass der User sich innerhalb der zugewiesenen möglichen Gruppen u.U. eine aussuchen kann, die wirksam ist, aber nicht der der Datei entspricht.

                  - Sven Rautenberg