Christian Kruse: Apache-Problem: überlappende Location-Direktiven

Tag zusammen,

ich habe ein kleines Problem mit dem Apachen. Und zwar moechte ich, dass verschiedene
Bereiche eines Verzeichnisbaums mit unterschiedlichen Realms geschuetzt werden. Beispiel:

/ soll fuer alle User der Gruppe xyz zugaenglich sein
/abc/ soll fuer alle User der Gruppe zyx zugaenglich sein
/abc/admin/ soll nur fuer user abc und def zugaenglich sein

Dummerweise frisst der Apache es _nicht_, wenn man Entsprechend drei <Directive>- oder
<Location>-Container dafuer bastelt. Hat jemand eine Idee, wie man ihn dazu bringen
koennte?

Grüße,
 CK

--
Echte Hacker benutzen Aexte. (Thomas Walter in de.org.ccc)
http://wwwtech.de/
  1. Hi,

    / soll fuer alle User der Gruppe xyz zugaenglich sein
    /abc/ soll fuer alle User der Gruppe zyx zugaenglich sein
    /abc/admin/ soll nur fuer user abc und def zugaenglich sein

    Ich weiß nicht, ob das bei Location auch zutrifft, aber:

    wenn man Aliase /abc, /abc/admin einrichten will, muß man den kürzesten zuletzt definieren, da sonst bei einer URL /abc/admin das /abc bereits durch den Alias ersetzt wird, bevor das "admin" ausgewertet wird.

    Ich würde an Deiner Stelle einfach mal mit der Reihenfolge der Location-Einträge spielen.

    Dummerweise frisst der Apache es _nicht_, wenn man Entsprechend drei <Directive>- oder
    <Location>-Container dafuer bastelt.

    Directive? Directory?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo MudGuard,

      Hi,

      / soll fuer alle User der Gruppe xyz zugaenglich sein
      /abc/ soll fuer alle User der Gruppe zyx zugaenglich sein
      /abc/admin/ soll nur fuer user abc und def zugaenglich sein

      Ich weiß nicht, ob das bei Location auch zutrifft, aber:

      Nein, leider nicht. Fuer <Directory> ist dokumentiert: Abarbeitungsreihenfolge from
      shortest path to longest. Fuer <Location> steht gar nichts. Aber dummerweise funktioniert
      das aber irgendwie nicht fuer require, irgendwie.

      Dummerweise frisst der Apache es _nicht_, wenn man Entsprechend drei <Directive>- oder
      <Location>-Container dafuer bastelt.

      Directive? Directory?

      Aeh, ja, sorry, <Directory>.

      Grüße,
       CK

      --
      "Ich muss auflegen, mein Essen ist gleich fertig."
      "Oh, was gibt 's denn?"
      "Hmm. Die Packung liegt schon im Muell, keine Ahnung.
      http://wwwtech.de/
      1. Hi,

        Nein, leider nicht. Fuer <Directory> ist dokumentiert: Abarbeitungsreihenfolge from
        shortest path to longest. Fuer <Location> steht gar nichts. Aber dummerweise funktioniert
        das aber irgendwie nicht fuer require, irgendwie.

        require? Also Base Authentification?
        Hast Du verschiedene Realms angegeben oder immer das gleiche?

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hallo MudGuard,

          Hi,

          Nein, leider nicht. Fuer <Directory> ist dokumentiert: Abarbeitungsreihenfolge from
          shortest path to longest. Fuer <Location> steht gar nichts. Aber dummerweise funktioniert
          das aber irgendwie nicht fuer require, irgendwie.

          require? Also Base Authentification?

          Ja. Ich dachte, das sei aus der Frage hervorgegangen.

          Hast Du verschiedene Realms angegeben oder immer das gleiche?

          Sowohl als auch.

          Ich habe die Loesung allerdings jetzt gefunden: es geht nicht per httpd.conf, es _muss_
          .htaccess verwendet werden. Jetzt hat das ganze nur noch einen Schoenheitsfehler:
          Mozilla & IE fragen nach /favicon.ico ;-) Mal sehen, ob ich es hinkriege, dass favicon.ico
          nicht erfasst wird.

          Grüße,
           CK

          --
          Keine Schneeflocke faellt je auf die falsche Stelle.
          http://wwwtech.de/
          1. Hallo nocheins,

            Mal sehen, ob ich es hinkriege, dass favicon.ico nicht erfasst wird.

            gut, jetzt siehts so aus:

            in / eine .htaccess:

            <Files "favicon.ico">
              require valid-user
            </Files>

            require group xyz

            in /abc/ eine .htaccess:

            require group zyx

            in /abc/admin/ eine .htaccess:

            require user abc def

            Grüße,
             CK

            --
            Auf der ganzen Welt gibt es nichts Weicheres und Schwaecheres als Wasser. Doch in der Art, wie es dem Harten zusetzt, kommt nichts ihm gleich.
            http://wwwtech.de/
  2. Tag zusammen,

    ich habe ein kleines Problem mit dem Apachen. Und zwar moechte ich, dass verschiedene
    Bereiche eines Verzeichnisbaums mit unterschiedlichen Realms geschuetzt werden. Beispiel:

    / soll fuer alle User der Gruppe xyz zugaenglich sein
    /abc/ soll fuer alle User der Gruppe zyx zugaenglich sein
    /abc/admin/ soll nur fuer user abc und def zugaenglich sein

    Dummerweise frisst der Apache es _nicht_, wenn man Entsprechend drei <Directive>- oder
    <Location>-Container dafuer bastelt. Hat jemand eine Idee, wie man ihn dazu bringen
    koennte?

    Verstehe ich nicht. Folgendes funktioniert hier (Apache 2), wie erwartet (user a kommt auf /, user b auf /abc und x und y auf /abc/admin; auch ohne verschiedene Realms und auch wenn x/y Gruppenmitglieder sind):

    <Location />
        Authtype Basic
        Authname "foo"
        AuthUserfile conf/users
        AuthGroupfile conf/groups
        require group 1
    </Location>

    <Location /abc>
        AuthName "bar"
        require group 2
    </Location>

    <Location /abc/admin>
        AuthName "baz"
        require user x y
    </Location>

    ----------
    $ cat conf/users
    x:$apr1$BW5Lj...$UQOe5UyCiXG7hIaxQ1sWE/
    y:$apr1$MJaJk/..$kp9udZSYA/8EVsYUfG.1L0
    a:$apr1$f3.9B...$PnWeQkn9FDycwnc4Lu8aw.
    b:$apr1$PX2c2...$FNZ3bJvNNhIP9QoRGojIV1
    $ cat conf/groups
    1: a
    2: b

    Was funktioniert denn bei dir nicht? Das ließ sich anhand deiner Fehlerbeschreibung leider nicht herausfinden.

    Mr. P