johny7: htaccess Zugriff für alle

Moin allerseits,

ich habe für ein Verzeichnis den Zugriff  per htaccess für lediglich ausgewählte Benutzer erlaubt. Nun habe ich dort ein Unterverzeichnis "public". Kann ich für dieses Verzeichnis die Beschränkung per htaccess-Datei aufheben, so dass jeder ohne Passwortabfrage darauf zugreifen kann?

Grüße, JN

--
ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
http://www.johny7.de
  1. Hi,

    ich habe für ein Verzeichnis den Zugriff  per htaccess für lediglich ausgewählte Benutzer erlaubt. Nun habe ich dort ein Unterverzeichnis "public". Kann ich für dieses Verzeichnis die Beschränkung per htaccess-Datei aufheben, so dass jeder ohne Passwortabfrage darauf zugreifen kann?

    Ja, mit einer geeigneten Kombination von Allow/Require und Satisfy.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Moin allerseits,

      Ja, mit einer geeigneten Kombination von Allow/Require und Satisfy.

      Allow All
      ?

      Grüße, JN

      --
      ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
      http://www.johny7.de
      1. Hi,

        Ja, mit einer geeigneten Kombination von Allow/Require und Satisfy.

        Allow All
        ?

        Erfolg
        Fragezeichen

        Manual gelesen bzgl. der genannten Stichwörter?

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Moin allerseits,

          Erfolg
          Fragezeichen

          Manual gelesen bzgl. der genannten Stichwörter?

          MfG ChrisB

          Irgendwie komme ich nicht weiter. Das Web danach durchsucht - erfolgslos.
          Im Verzeichnis redaktion habe ich den Zugriff beschränkt über require group etc. Im Unterverzeichnis public habe ich schon alles Kombinationen ausprobiert:
          allow from all => 500
          require all => Anmelde-Dialog

          Ich will keinen Anmeldedialog, sondern dass jeder einfach auf die Dateien unter public zugreifen kann.

          Grüße, JN

          --
          ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
          http://www.johny7.de
          1. Hi,

            Manual gelesen bzgl. der genannten Stichwörter?

            Irgendwie komme ich nicht weiter. Das Web danach durchsucht - erfolgslos.

            Ich fragte nicht, ob du im Web gesucht hast, sondern ob du im Manual nachgelesen hast.

            Im Unterverzeichnis public habe ich schon alles Kombinationen ausprobiert:
            allow from all => 500

            Wenn du keinen Schreibfehler gemacht hast, dann fehlt dir wohl die Berechtigung, Allow zu nutzen.

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
            1. Moin allerseits,

              Hi,

              Manual gelesen bzgl. der genannten Stichwörter?

              Irgendwie komme ich nicht weiter. Das Web danach durchsucht - erfolgslos.

              Ich fragte nicht, ob du im Web gesucht hast, sondern ob du im Manual nachgelesen hast.

              Entschuldige die dumme Frage: Welches Manual? Die eine Seite von SelfHTML habe ich schon in allen Richtungen durchforstet.

              Im Unterverzeichnis public habe ich schon alles Kombinationen ausprobiert:
              allow from all => 500

              Wenn du keinen Schreibfehler gemacht hast, dann fehlt dir wohl die Berechtigung, Allow zu nutzen.

              Aber ist allow nicht dazu da, ip-Bereiche aus zu schließen oder zu erlauben? Oder heißt

              order deny, allow
              allow from all

              wirklich, die Beschränkungen der Elternverzeichnisse werden aufgehoben?
              Kann ich dann nicht in der .htaccess im Elternverzeichnis public von meiner Bedingung ausnehmen?

              Grüße, JN

              --
              ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
              http://www.johny7.de
              1. Hi,

                Entschuldige die dumme Frage: Welches Manual?

                Das des Apache-Webservers natürlich.
                http://httpd.apache.org/docs/

                Wenn du keinen Schreibfehler gemacht hast, dann fehlt dir wohl die Berechtigung, Allow zu nutzen.
                Aber ist allow nicht dazu da, ip-Bereiche aus zu schließen oder zu erlauben?

                Wieso „aber“?

                Oder heißt

                order deny, allow
                allow from all

                wirklich, die Beschränkungen der Elternverzeichnisse werden aufgehoben?

                Was es bedeutet, erklärt das Manual.

                MfG ChrisB

                --
                “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
                1. Moin allerseits,

                  Was es bedeutet, erklärt das Manual.

                  Im Manual steht nicht wesentlich mehr, als in SelfHTML. Kannst du mir den konkreten Link geben, wo du diese Information zu sehen meinst? Ich habe alles durchsucht, aber nichts gefunden, was in meinem Fall weiterhilft.
                  Oder kannst du die Lösung gleich mit aus dem Ärmel schütteln?

                  Grüße, JN

                  --
                  ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
                  http://www.johny7.de
                  1. Hallo,

                    Im Manual steht nicht wesentlich mehr, als in SelfHTML. Kannst du mir den konkreten Link geben, wo du diese Information zu sehen meinst? Ich habe alles durchsucht, aber nichts gefunden, was in meinem Fall weiterhilft.
                    Oder kannst du die Lösung gleich mit aus dem Ärmel schütteln?

                    nachdem Dein Problem trotz all dem hin und her immer noch nicht nachvollziehbar aufbereitet ist, kopiere bitte den Inhalt Deiner beiden .htaccess-Dateien hier!

                    Gruß aus Berlin!
                    eddi

                    1. Moin allerseits,

                      nachdem Dein Problem trotz all dem hin und her immer noch nicht nachvollziehbar aufbereitet ist, kopiere bitte den Inhalt Deiner beiden .htaccess-Dateien hier!

                      Ich habe folgende Verzeichnisstruktur:

                      /
                        /redaktion/
                        /redaktion/public/

                      Die .htaccess im Verzeichnis redaktion sieht folgendermaßen aus:

                        
                      # .htaccess-Datei für redaktion  
                      AuthType Basic  
                      AuthName "Redaktion"  
                      AuthUserFile /users/example/www/security/.htusers  
                      AuthGroupFile /users/example/www/security/.htgroups  
                      Require group Redaktion  
                      
                      

                      Wie soll nun die .htaccess in public aussehen, wenn dort Grafiken abgelegt werden, die von jedem per <img /> ohne Auftauchen der Passwortabfrage aufgerufen werden können sollen.
                      Im Moment habe ich das einfach so gelöst, dass /redaktion/ ungeschützt ist und die Unterverzeichnisse (außer /public/) geschützt.
                      Aber es muss doch auch anders gehen. Ich habe jetzt schon das Manual durchforstet, anonymous und andere Varianten probiert, bin aber noch nicht zur Lösung gekommen.

                      Grüße, JN

                      --
                      ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
                      http://www.johny7.de
                      1. Hi,

                        Wie soll nun die .htaccess in public aussehen, wenn dort Grafiken abgelegt werden, die von jedem per <img /> ohne Auftauchen der Passwortabfrage aufgerufen werden können sollen.

                        Das beschrieb ich bereits im groben, und auch bzgl. Sastisfy findet sich im Manual ein Beispiel, das sich entsprechend abwandeln lässt.

                        Aber es muss doch auch anders gehen. Ich habe jetzt schon das Manual durchforstet, anonymous und andere Varianten probiert, bin aber noch nicht zur Lösung gekommen.

                        Wie gesagt, wenn dir zur Nuztung von Allow in .htaccess-Dateien die Berechtigung fehlt, dann geht's so für dich nicht.

                        MfG ChrisB

                        --
                        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
                        1. Moin allerseits,

                          Das beschrieb ich bereits im groben, und auch bzgl. Sastisfy findet sich im Manual ein Beispiel, das sich entsprechend abwandeln lässt.

                          Endlich habe ich's kapiert. Es hat sogar geklappt.

                          Grüße, JN

                          --
                          ie:{ fl:( br:^ va:| ls:[ fo:| rl:? n4:? ss:| de:] js:| ch:? sh:( mo:| zu:)
                          http://www.johny7.de
            2. Hallo,

              Im Unterverzeichnis public habe ich schon alles Kombinationen ausprobiert:
              allow from all => 500
              Wenn du keinen Schreibfehler gemacht hast, ...

              hat er wohl, wenn er das wirklich so in der .htaccess stehen hat.
              Die Welt ist case sensitive. Apache auch. ;-)

              So long,
               Martin

              --
              Arzt:    Gegen Ihr Übergewicht hilft wohl nur noch Gymnastik.
              Patient: Sie meinen, Kniebeugen und so?
              Arzt:    Nein, Kopfschütteln. Immer dann, wenn Ihnen jemand was zu essen anbietet.
              1. Hallo Martin,

                Die Welt ist case sensitive.

                dieser Blödsinn ist zwar immer wieder hier im Forum zu lesen, entspricht aber keinesfalls der Wahrheit. Ein Blick in die Sourcen Apaches bestätigt auch die üblichen Erfahrungen mit der Konfiguration.

                Auffinden von Direktiven (/server/config.c):

                AP_CORE_DECLARE(const command_rec *) ap_find_command(const char *name,  
                                                                     const command_rec *cmds)  
                {  
                    while (cmds->name) {  
                        if (!strcasecmp(name, cmds->name))  
                            return cmds;  
                  
                        ++cmds;  
                    }  
                  
                    return NULL;  
                }
                

                Direktivendeklaration (ab hier aus /modules/aaa/authz_host.c):

                static const command_rec authz_host_cmds[] =  
                {  
                    AP_INIT_TAKE1("order", order, NULL, OR_LIMIT,  
                                  "'allow,deny', 'deny,allow', or 'mutual-failure'"),  
                    AP_INIT_ITERATE2("allow", allow_cmd, &its_an_allow, OR_LIMIT,  
                                     "'from' followed by hostnames or IP-address wildcards"),  
                    AP_INIT_ITERATE2("deny", allow_cmd, NULL, OR_LIMIT,  
                                     "'from' followed by hostnames or IP-address wildcards"),  
                    {NULL}  
                };
                

                Die Werte der Direktive Allow:

                static const char *allow_cmd(cmd_parms *cmd, void *dv, const char *from,  
                                             const char *where_c)  
                {  
                    authz_host_dir_conf *d = (authz_host_dir_conf *) dv;  
                    allowdeny *a;  
                    char *where = apr_pstrdup(cmd->pool, where_c);  
                    char *s;  
                    char msgbuf[120];  
                    apr_status_t rv;  
                  
                    if (strcasecmp(from, "from"))  
                        return "allow and deny must be followed by 'from'";  
                  
                    a = (allowdeny *) apr_array_push(cmd->info ? d->allows : d->denys);  
                    a->x.from = where;  
                    a->limited = cmd->limited;  
                  
                    if (!strncasecmp(where, "env=!", 5)) {  
                        a->type = T_NENV;  
                        a->x.from += 5;  
                  
                    }  
                    else if (!strncasecmp(where, "env=", 4)) {  
                        a->type = T_ENV;  
                        a->x.from += 4;  
                  
                    }  
                    else if (!strcasecmp(where, "all")) {  
                        a->type = T_ALL;  
                    }  
                    else if ((s = ap_strchr(where, '/'))) {  
                        *s++ = '\0';  
                        rv = apr_ipsubnet_create(&a->x.ip, where, s, cmd->pool);  
                        if(APR_STATUS_IS_EINVAL(rv)) {  
                            /* looked nothing like an IP address */  
                            return "An IP address was expected";  
                        }  
                        else if (rv != APR_SUCCESS) {  
                            apr_strerror(rv, msgbuf, sizeof msgbuf);  
                            return apr_pstrdup(cmd->pool, msgbuf);  
                        }  
                        a->type = T_IP;  
                    }  
                    else if (!APR_STATUS_IS_EINVAL(rv = apr_ipsubnet_create(&a->x.ip, where,  
                                                                            NULL, cmd->pool))) {  
                        if (rv != APR_SUCCESS) {  
                            apr_strerror(rv, msgbuf, sizeof msgbuf);  
                            return apr_pstrdup(cmd->pool, msgbuf);  
                        }  
                        a->type = T_IP;  
                    }  
                    else { /* no slash, didn't look like an IP address => must be a host */  
                        a->type = T_HOST;  
                    }  
                  
                    return NULL;  
                }
                

                Die Werte der Direktive Order:

                static const char *order(cmd_parms *cmd, void *dv, const char *arg)  
                {  
                    authz_host_dir_conf *d = (authz_host_dir_conf *) dv;  
                    int i, o;  
                  
                    if (!strcasecmp(arg, "allow,deny"))  
                        o = ALLOW_THEN_DENY;  
                    else if (!strcasecmp(arg, "deny,allow"))  
                        o = DENY_THEN_ALLOW;  
                    else if (!strcasecmp(arg, "mutual-failure"))  
                        o = MUTUAL_FAILURE;  
                    else  
                        return "unknown order";  
                  
                    for (i = 0; i < METHODS; ++i)  
                        if (cmd->limited & (AP_METHOD_BIT << i))  
                            d->order[i] = o;  
                  
                    return NULL;  
                }
                

                Manpage für strcasecmp(). Mit anderen Worten: Apache ist soetwas von statisch case INsensitive wie nur irgendetwas sein kann!

                Apache auch. ;-)

                Der Verweis passt zu Deiner Aussage, selbst wenn sie richtig wäre, wie "Der eine schwimmt über den See, der andere hat auch  Euro".

                Gruß aus Berlin!
                eddi

              2. Hi,

                allow from all => 500
                Wenn du keinen Schreibfehler gemacht hast, ...

                hat er wohl, wenn er das wirklich so in der .htaccess stehen hat.
                Die Welt ist case sensitive. Apache auch. ;-)

                Nein, das ist hier nicht das Problem.

                Syntax of the Configuration Files:
                „Directives in the configuration files are case-insensitive, but arguments to directives are often case sensitive.“

                Und bei [A|a]llow ist „from all“ in der Dokumentation klein geschrieben. Allerdings ist m.W. auch das nicht erforderlich.

                MfG ChrisB

                --
                “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
                1. Hallo,

                  Syntax of the Configuration Files:
                  „Directives in the configuration files are case-insensitive, but arguments to directives are often case sensitive.“

                  genau den Satz hatte ich gemeint. Ich hatte allerdings gelesen "... configuration files are case-sensitive", denn die Tatsache, dass eine Auswertung *nicht* case-sensitive ist, bedarf ja keiner Erwähnung, weil sie keine potentielle Fehlerquelle ist.

                  Ciao,
                   Martin

                  --
                  Frauen sind wie Elektrizität: Fasst man sie an, kriegt man eine gewischt.