Sylvanus: <Directory ".svn">

Hallo liebes Forum,

Ich denke folgendes Stückchen Apache-Konfigurationsdirektive leuchtet ein:

<Directory ".svn">
        Order Deny,Allow
        Deny from all
</Directory>

Es soll z.B. in so einem Verzeichnisbaum:

* bla
  * .svn/
    * prop-base/
    * prop/
    * text-base/
    * ...
  * index.html
  * meinverzeichnis/
    * .svn/
      * prop-base/
      * ...
    * meine-dateien.html
    * blubb.png
    * ...

immer die Verzeichnisse mit dem exakten Namen ".svn" für Besucher verbieten. Ich kombiniere das noch mit einem "IndexIgnore .svn".

Mein Problem: Die IndexIgnore-Direktive geht, der <Directory>-Container nicht. Warum? Wie lässt sich das sonst umsetzen?

Grüße,

Sylvanus

  1. Hallo Sylvanus,

    Ich denke folgendes Stückchen Apache-Konfigurationsdirektive leuchtet ein:

    <Directory ".svn">
            Order Deny,Allow
            Deny from all
    </Directory>

    Ja, leuchtet ein - ist aber wohl nicht das was du dir wünschst.
    Ich nehme an du suchst eher nach der <Files>-Direktive.

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    panic("Oh boy, that early out of memory?");
            linux-2.2.16/arch/mips/mm/init.c
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    1. Hallo Marx,

      <Directory ".svn">
              Order Deny,Allow
              Deny from all
      </Directory>
      Ja, leuchtet ein - ist aber wohl nicht das was du dir wünschst.
      Ich nehme an du suchst eher nach der <Files>-Direktive.

      Jein. Damit ist zwar der Zugriff auf /.svn gesperrt, /.svn/ geht aber. Zumindest mit <Files ".svn">.

      Sylvanus

      1. Hi Sylvanus,

        Jein. Damit ist zwar der Zugriff auf /.svn gesperrt, /.svn/ geht aber. Zumindest mit <Files ".svn">.

        Probiers mal so, wie in der Subversion FAQ beschrieben.

        Viele Grüße,
          ~ Dennis.

        1. Moin Dennis,

          Jein. Damit ist zwar der Zugriff auf /.svn gesperrt, /.svn/ geht aber. Zumindest mit <Files ".svn">.
          Probiers mal so, wie in der Subversion FAQ beschrieben.

          Dort steht die Lösung mit regulären Ausdrücken, wie ich sie auch schon in Betracht gezogen habe:

          <DirectoryMatch "^/.*/.svn/">
              Order deny,allow
              Deny from all
          </DirectoryMatch>

          Nur gefällt mir das nicht wirklich. So einen Regex bei *jeder* Apache-Anfrage durchzuführen, ist doch ein mordsmäßiger Perfomancebremser. Gut, er wird nur einmal, bei Serverstart, kompiliert, aber warum gibt es keine einfachere Möglichkeit, Apache beizubringen, dass alles, was unterhalb eines Verzeichnisses mit dem Namen ".svn" ist, verboten ist?

          Grüße,

          Sven

          1. Hi Sylvanus,

            <DirectoryMatch "^/.*/.svn/">

            Du kannst übrigens auch ".svn" schreiben, das funktioniert ebenfalls prima - nutze ich in der Form auch auf Live-Servern.

            Nur gefällt mir das nicht wirklich. So einen Regex bei *jeder* Apache-Anfrage durchzuführen, ist doch ein mordsmäßiger Perfomancebremser. Gut, er wird nur einmal, bei Serverstart, kompiliert, aber warum gibt es keine einfachere Möglichkeit, Apache beizubringen, dass alles, was unterhalb eines Verzeichnisses mit dem Namen ".svn" ist, verboten ist?

            Ich vermute mal, dass das daran liegt, dass der Apache stets ganze Pfade zu den Verzeichnissen und nicht bloß die Verzeichnisnamen betrachtet. Das muss er auch, denn /var/www/test/abc und /var/www/test2/abc sind nun mal unterschiedliche Verzeichnisse, auch wenn sie den gleichen Namen tragen! Un man soll ja für unterschiedliche Verzeichnisse auch unterschiedliche Konfigurationen vergeben können. Mit <Directory> kannst du ja jedes einzelne Verzeichnis absolut adressieren und entsprechende Konfigurationen festlegen.

            In dem Moment wo du mehrere Verzeichnisse mit derselben Konfiguration belegen willst, sind die absoluten Pfade zu den Verzeichnissen natürlich alle unterschiedlich, somit musst du (wenn du nicht alle Verzeichnisse einzeln auflisten willst) zwangsläufig auf reguläre Ausdrücke umsteigen. Und ob du jetzt in der Konfigurationsdatei ".svn" schreibst und Apache da einen regulären Ausdruck draus macht um den gegen den Verzeichnispfad zu prüfen, oder ob du direkt den regulären Ausdruck notierst macht effektiv von der Performance her keinen Unterschied.

            Zumal letzteres wohl auch Missverständnissen bzw. ungewollten Fehlkonfigurationen vorbeugt (schließlich musst du reguläre Ausdrücke explizit angeben, entweder mit <DirectoryMatch> oder mit <Directory ~>), weshalb ich gut nachvollziehen kann, dass sich die Apache Entwickler hierfür entschieden haben.

            Viele Grüße,
              ~ Dennis.

          2. Nur gefällt mir das nicht wirklich.

            Das kann ich gut verstehen. Eine Arbeitskopie hat auf einem Produktivserver absolut nichts verloren. Dafür gibt es die Exportfunktion die ggf. per Hookscript angestossen werden kann.