Andy: htaccess auf Apache läuft nicht!

Hallo Zusammen

Habe eine kleine Frage! Habe vor kurzem einen Apache Server zum laufen gebracht! Alles standart, habe nix verändert oder konfiguriert was nicht umbedingt notwendig war! Ich verwende Suse ( Novel ) Linux 10.1.

Mein Problem ist, das ich gerne meine HTML Files im /htdocs Verzeichniss mit htaccess schützen möchte! Jedoch klappt dies nicht! Die Dateien werden nicht geschützt! Jetzt habe ich gelesen das man AllowOverride auf all setzen muss, damit es klappt! Nur, welche Datei ist gemeint?

/etc/apache2/httpd.conf <== Denke diese Datei ist es!
/usr/share/doc/packages/apache2/httpd.conf.default
/usr/share/doc/packages/apache2/original/httpd.conf
/usr/share/susehelp/httpd.conf

Leider werde ich aus dem Help File auch nicht gerade schlau! http://72.14.221.104/search?q=cache:865d...de&ct=clnk&cd=1

Habe in der Datei /etc/apache2/httpd.conf den Eintrag

<Directory "/usr/local/apache2/htdocs/">
AllowOverride All
</Directory>

eingegeben! Jedoch hat das nix gebracht!

Muss man noch etwas anderes berücksichtigen damit der .htaccess Schutz funktioniert?

Danke und Gruss!

  1. Lieber Andy,

    Alles standart

    ... standart also.

    Jetzt habe ich gelesen das man AllowOverride auf all setzen muss, damit es klappt!

    Bevor Du dieses tust, sag uns lieber, welche Module Du in Deinem Apachen aktiviert hast. Meines Wissens braucht es dazu in der config bei den Modulen folgende Zeile:

    LoadModule auth_module modules/mod_auth.so

    Aber ob das ausreichend ist, das vermag ich nicht zu sagen. Christoph (unser Forums-Alterspräsident :P) ist da Experte. Vielleicht kann er Hilfreicheres zu dieser Frage beisteuern?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Es sollte so aussehen:

      Alles standart

      ... standart also.

    2. Hallo Felix & Andy,

      Alles standart
      ... standart also.

      fehlt da nicht noch was? ;-)

      Meines Wissens braucht es dazu in der config bei den Modulen folgende Zeile:
      LoadModule auth_module modules/mod_auth.so

      Das, sowie ein 'AllowOverride AuthConfig' sollte in der zentralen Apache-Konfiguration eigentlich genügen (AllowOverride All natürlich erst recht).

      Christoph (unser Forums-Alterspräsident :P) ist da Experte. Vielleicht kann er Hilfreicheres zu dieser Frage beisteuern?

      Zweifellos kann er das. Bis er sich meldet, versuch ich's mal. ;-)
      Nachdem in der httpd.conf nun die nötigen Voraussetzungen geschaffen sind, ist die lokale Konfigurationsdatei .htaccess dran. Was steht denn da bisher drin?

      AuthType Basic  
      AuthName "Private Zone"  
      AuthUserFile .htpassword  
      Require valid-user
      

      Wichtig sind vor allem die Einträge AuthName und AuthUserFile.
      AuthName gibt dem Bereich ("Realm") einen Namen, der auch im HTTP-AUTH-Dialog im Browser angezeigt wird. Dieser Name dient nur zur eindeutigen Erkennung des Bereichs und hat keinen Bezug zu irgendwelchen Dateinamen.
      AuthUserFile verweist auf eine Datei, in der die zugelassenen User mit ihren (üblicherweise) verschlüsselten Passwörtern aufgelistet sind.

      Die Benutzer können noch in Gruppen organisiert sein; ich gehe mal davon aus, dass das nicht nötig ist. Dann war's das schon. Andernfalls käme noch die Direktive AuthGroupFile, die ganz ähnlich wie AuthUserFile auf eine Datei verweist, die die Gruppen und die zugehörigen User auflistet. Anstatt valid-user steht dann bei der Require-Direktive

      Require group <GRUPPE>

      wobei anstelle von <GRUPPE> der Name der zugelassenen Benutzergruppe steht.

      Ich weiß, dass Christoph Schnauß mal einen recht ausführlichen Artikel darüber geschrieben hat, finde ihn aber auf die Schnelle nicht. Aber der von Michael Schröpl ist auch nicht schlecht, finde ich.

      So long,
       Martin

      --
      Ich bin 30. Ich demensiere apokalyptisch.
        (Orlando)
      1. hallo,

        Ich weiß, dass Christoph Schnauß mal einen recht ausführlichen Artikel darüber geschrieben hat, finde ihn aber auf die Schnelle nicht.

        Du meinst vermutlich den hier. Da habe ich grade eine Neufassung in Arbeit, aber für die in diesem Thread behandelten Fragen ist das, was bisher drinsteht, auch noch gültig und nutzbar.

        Aber der von Michael Schröpl ist auch nicht schlecht, finde ich.

        Es gibrt noch zwei weitere Artikel von Michael. Und dann gibts noch die zugehörige SELFHTML-Seite.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
    3. hallo Felix,

      LoadModule auth_module modules/mod_auth.so

      Tja ... man sollte ein OP richtig lesen. Es geht um eine SUSE 10.1. Die installiert einen Apache 2.2.0 als "Standard" über YaST, und in dieser Apache-Version gibts kein mod_auth.so mehr - das heißt jetzt mod_auth_basic.so, und es gibt darüberhinaus noch weitere.

      Aber ob das ausreichend ist, das vermag ich nicht zu sagen. Christoph (unser Forums-Alterspräsident :P) ist da Experte.

      Oh, danke für die Blumen. Tatsächlich machts die SUSE mit "LoadModule" etwas komplizierter, das heißt, du kannst von Hand nicht einfach so eine Anweisung eintragen. Die LoadModule-Anweisung steht hier in /etc/apache2/sysconfig.d/loadmodule.conf. Und diese Datei wird leider bei Serverstart "generiert". Hier muß man tatsächlich über YaST gehen, wenn man was ändern möchte, es sei denn, man weiß, wo es in /etc/sysconfig/apache2 einzutragen ist (die entsprechende Anmerkung in meinem Artikel gilt auch noch für SUSE 10.1 und Apache 2.2.x).

      Vielleicht kann er Hilfreicheres zu dieser Frage beisteuern?

      Das hoffe ich doch hiermit getan zu haben.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. Hi Andy,

    /etc/apache2/httpd.conf <== Denke diese Datei ist es!

    Richtig, die ist es (bzw. sollte es standardmäßig sein, /etc/apache2/apache2.conf käme auch noch in Frage).

    <Directory "/usr/local/apache2/htdocs/">
    AllowOverride All
    </Directory>

    Und die zu schützenden Dateien liegen in /usr/local/apache2/htdocs ? Das von Felix genannte Modul muss in der Tat geladen sein (bei Apache 2.2 sind es AFAIK mehrere und heißen geringfügig anders), aber eigentlich ist dieses Modul auch standardmäßig geladen.

    Hast du den Apache nach der Änderung in der httpd.conf auch neugestartet?

    Du musst dann natürlich in /usr/local/apache2/htdocs noch eine .htaccess und .htpasswd Datei anlegen, wie es hier in SELFHTML beschrieben steht.

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Patch zur Verwendung von PATHINFO in JLog
    Lache nie über die Dummheit der anderen. Sie ist deine Chance. (Winston Churchill)
    1. hallo Dennis,

      /etc/apache2/httpd.conf <== Denke diese Datei ist es!
      Richtig, die ist es (bzw. sollte es standardmäßig sein, /etc/apache2/apache2.conf käme auch noch in Frage).

      Nein. SUSE 10.1 installiert über YaST Apache 2.2.0 (einen Apache 1.3.x bekommst du über YaST gar nicht mehr). Die Konfigurationsdatei heißt httpd.conf. Sie ist aber nur dafür da, per "Include" andere Konfigurationsdateien einzubinden und sollte nicht für eigene Einstellungen genutzt werden - sofern man nicht wirklich weiß, was man da tut.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
  3. hallo Andy,

    Habe vor kurzem einen Apache Server zum laufen gebracht! Alles standart, habe nix verändert oder konfiguriert was nicht umbedingt notwendig war! Ich verwende Suse ( Novel ) Linux 10.1.
    Mein Problem ist, das ich gerne meine HTML Files im /htdocs Verzeichniss mit htaccess schützen möchte!

    Mal ganz vorsichtig: wovor möchtest du sie denn schützen?

    Jetzt habe ich gelesen das man AllowOverride auf all setzen muss

    Wo hast du das gelesen? AllowOverride All ist nur eine von mehreren Möglichkeiten.

    Nur, welche Datei ist gemeint?

    Was du unterhalb von /usr/share findest, sind Beispieldateien, die vom System nicht genutzt werden.

    /etc/apache2/httpd.conf <== Denke diese Datei ist es!

    Korrekt. Diese Datei ist gemeint. Aber: schau sie dir einmal genau an. Was du tun möchtest, soll auf die DocumentRoot Auswirkung haben, und in der httpd.conf findest du keine solche Anweisung. Dumme Sache, gelle?
    Diese Anweisung steht bei SUSE in /etc/apache2/default-server.conf. Dort müßtest du dein AllowOverride eintragen bzw. den vorhandenen Wert von "None" auf den, den du haben möchtest, ändern.

    Leider werde ich aus dem Help File auch nicht gerade schlau! http://72.14.221.104/search?q=cache:865d...de&ct=clnk&cd=1

    Ich auch nicht. Das ist eine Google-Fehlermeldung.

    Habe in der Datei /etc/apache2/httpd.conf den Eintrag
    <Directory "/usr/local/apache2/htdocs/">
    AllowOverride All
    </Directory>
    eingegeben! Jedoch hat das nix gebracht!

    Das ist eigenartig. Offenbar hast du doch keine "Standard"-Installation, sondern irgendwas während der Installation herumgemurkelt. Als "Standard" gibt es bei der SUSE kein Verzeichnis /usr/local/apache2. Schau mal nach, was du in /srv/www findest, dort sollte ein Verzeichnis htdocs liegen.
    Allerdings steht es dir frei, deine DocumentRoot irgendwohin zu legen, an eine beliebige Stelle deiner Wahl.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hi Zusammen

      Wow, das sind ja schon ein paar Antworten! Danke!

      Also, ich möchte meine Dateien im htdocs Verzeichnis via htaccess schützen damit nicht jeder Zugriff auf dieses Verzeichnis hat!

      Das mit dem AllowOverride All habe ich in der Dokumentation des Apache gelesen!

      Richtig! Das mit der httpd.conf Datei ist mir auch aufgefallen, die Einträge scheinen nicht richtig zu passen!

      Ich habe den Apache ohne Zusatzangeben nach dem Tuorial auf der Apche Homepage installiert! Dabei habe ich keinen Prefix angegeben, weshalb er mir den Apache in das Verzeichnis /usr/local/apache2/ installiert hat! Daher liegt auch mein hdocs Verzeichnis in diesem Ordner!

      Griss aus der Schweiz!

      1. hallo,

        Ich habe den Apache ohne Zusatzangeben nach dem Tuorial auf der Apche Homepage installiert!

        Das heißt, du hast dir die Sourcen geholt und dann "./configure" und "make install" gefahren?

        Dabei habe ich keinen Prefix angegeben, weshalb er mir den Apache in das Verzeichnis /usr/local/apache2/ installiert hat!

        Das ist richtig, Das wird von der Apache Software Foundation so empfohlen. Würde man allerdings ändern können.

        Wichtig ist, daß du angibst, welche Apache-Version du dir installiert hast. Und da du mit dem Apache noch nicht so vertraut zu sein scheinst, würde ich dir eher empfehlen, ihn über YaST einzurichten. Deine SUSE hat ein paar Eigenheiten, und wenn du so vorgehst, wie du es anscheinend gemacht hast, wird nicht alles wirklich funktionieren. Dazu mußt du an mehreren anderen Stellen im System noch Scripts ändern bzw. anpassen.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. Hi

          Ja, richtig! Habe das ganze über ./configure und make install gemacht!

          Es ist die neuste Apache Version 2.2!

          Richtig erkannt! Bin mit Linux und Apache leider noch nicht ganz so vertraut wie ich das gerne wäre! Yast steht mir leider nicht direkt zur Verfügung da mein Server im Keller ( ohne Monitor und Keyboard ) steht! Das heisst ich kann nur via SSH ( Putty ) zugreifen! Und ein RDP ist mir eindeutig zu mühsam/ langsam!

          Also geht es nicht einfach, indem ich die default-server.conf Datei abändere? Wenn es über Yast einfach geht, muss ich halt schnell den Server an Monitor und Keyboard anschliessen? Wie funktioniert den das ganze mit Yast?

          Danke und Gruss aus Zürich! Andy

          1. hallo,

            Ja, richtig! Habe das ganze über ./configure und make install gemacht!
            Es ist die neuste Apache Version 2.2!

            Also Apache 2.2.3.

            Yast steht mir leider nicht direkt zur Verfügung da mein Server im Keller ( ohne Monitor und Keyboard ) steht! Das heisst ich kann nur via SSH ( Putty ) zugreifen!

            Das ist in deinem Fall etwas ungeschickt. Du mußt dann den etwas schwierigeren Weg gehen und auf YaST verzichten. Ich mag YaST auch nicht, aber wenn man schon eine SUSE benutzt, sollte man wenigstens wissen, wie YaST arbeitet und worauf bei der Konfiguration von Software für SUSE zu achten ist.

            Also geht es nicht einfach, indem ich die default-server.conf Datei abändere?

            Bei deiner Installation gibt es so eine Datei nicht. Aber es gibt für Apache 2.2.3 in /etc/apache2 noch Unterverzeichnisse, die "default" und "extra" heißen. Die solltest du dir unbedingt anschauen. So, wie du installiert hast, liegen die "LoadModule"-Anweisungen tatsächlich in deiner /etc/apache2/httpd.conf, und dort findest du auch die Festlegungen für die DocumentRoot.

            Wenn es über Yast einfach geht, muss ich halt schnell den Server an Monitor und Keyboard anschliessen?

            Nunja, du hast dich nun einmal entschieden, den etwas schwierigeren Weg zu gehen. Dann solltest du auch dabei bleiben.

            Grüße aus Berlin

            Christoph S.

            --
            Visitenkarte
            ss:| zu:) ls:& fo:) va:) sh:| rl:|
            1. Hi

              Da bin ich eindeutig auch der Meinung! Ich mag Yast einfach nicht! Jep, es ist Apache 2.2.3.!

              Die default-server.conf Datei existiert bei mir schon! Aber wenn sie nix nützt auch okay! Wende mich deshalb lieber der httpd.conf Datei zu! ICh kann wohl nicht davon ausgehen, das der eintrag AllowOverride All genügt? Was braucht es den noch? Oder reicht es schon?

              Danke und Gruss

              1. Hier habe ich mal einen Auszug aus meiner httpd.conf Datei! ISt der Eintrag so okay? Danke und Gruss

                optional cookie-based user tracking

                read the documentation before using it!!

                Include /etc/apache2/mod_usertrack.conf

                configuration of server-generated directory listings

                Include /etc/apache2/mod_autoindex-defaults.conf

                associate MIME types with filename extensions

                TypesConfig /etc/apache2/mime.types
                DefaultType text/plain
                Include /etc/apache2/mod_mime-defaults.conf

                set up (customizable) error responses

                Include /etc/apache2/errors.conf

                global (server-wide) SSL configuration, that is not specific to

                any virtual host

                Include /etc/apache2/ssl-global.conf

                forbid access to the entire filesystem by default

                <Directory />
                    Options None
                    AllowOverride All <== HIER!!!!!!!!!!!!!!!!!!!!!!!!
                    Order deny,allow
                    Deny from all
                </Directory>

                use .htaccess files for overriding,

                AccessFileName .htaccess

                and never show them

                <Files ~ "^.ht">
                    Order allow,deny
                    Deny from all
                </Files>

                List of resources to look for when the client requests a directory

                DirectoryIndex index.html index.html.var

                'Main' server configuration

                The directives in this section set up the values used by the 'main'

                server, which responds to any requests that aren't handled by a

                <VirtualHost> definition.  These values also provide defaults for

                any <VirtualHost> containers you may define later in the file.

                All of these directives may appear inside <VirtualHost> containers,

                in which case these default settings will be overridden for the

                virtual host being defined.

                Include /etc/apache2/default-server.conf

                Another way to include your own files

                The file below is generated from /etc/sysconfig/apache2,

                1. Hi

                  Irgendwie bekomme ich das gefühl, das ich noch zu wenig Ahnung von Linux und Apache habe, um ein solches unternehmen durchzuführen! Wollte eigentlich heute noch mysql und php zum laufen bringen, kann ich aber wohl gleich vergesse! Linux ist nun mla nicht so eifach, aber trotzdem 10000x besser als Windows :-)

                  Kleine letzte Frage an den Spezialisten! Ich überlege mir einen anderen Ansatz! Ich habe zusätzlich zu meinem Apache auch noch einen Webspace gemietet! Dort funktioniert htaccess perfekt, nun mache ich es einfach so, das das Inhaltverzeichnis mit den Link's zu den Download Dateien auf dem gemieteten Server liegt und per Htaccss geschütz wird! Dadurch müssen nur noch die Dateien auf meinen Apache abrufbereit sein! Was ja auch jetzt schon kein Problem ist! Gibt es aber einge möglichkeit die Dateien welche auf dem Apache liegen auf eine andere Art zu schützen? Sodass sie nur heruntergeladen werden können, wennn man den Link von meiner Seite ( Homepage auf meinem gemieteten Server ) aus benutzt? Z.b. mit Refferer?

                  Wie sicher ist eigenlich das htdocs Verzeichniss? Haben ausstehnde NUR auf dieses Verzeichniss zugriff?

                  ISt Apache eigentlich auch ein FTP Server? Oder benötigt man dazu ein Modul? Oder gar einen separaten Server?

                  Danke für die Hilfe! Gruss aus Zürich!

                  1. hallo,

                    Ich habe zusätzlich zu meinem Apache auch noch einen Webspace gemietet!

                    Ups. Was bedeutet jetzt "gemietet"? Ich nahm bisher an, daß deine SUSE 10.1 auf deinem Rechner zuhause läuft (auch wenn er im Keller steht) und der Rechner dir gehört. Wenn du zusätzlich gemieteten Webspace hast, ist das in Ordnung, hat aber mit deinem Apache überhaupt nichts zu tun.

                    Dadurch müssen nur noch die Dateien auf meinen Apache abrufbereit sein!

                    Ist denn nun "dein Apache" derjenige, der deinen gemieteten Webspace verwaltet? Wenn nicht, kannst du diesen "Ansatz" absolut vergessen.

                    Grüße aus Berlin

                    Christoph S.

                    --
                    Visitenkarte
                    ss:| zu:) ls:& fo:) va:) sh:| rl:|
                    1. Hi

                      Habe mich nicht richtig ausgedrückt!

                      Ich habe zwei Server:

                      1 x Apache Server ( steht zuhause im Keller, mit diesem habe ich auch das htaccess Problem )

                      1 x Gemieteter Webspace 1.5 Giga verwaltet von einem Unternehmen

                      Mein Ziel war es eigentlich Dateien sicher zum Download anbieten zu können! Da ich es aber nicht schaffe den htaccess SChutz zu aktivieren, verlege ich die Datei mit den Links zu den Dateien auf meinen gemieteten Webserver, da dort htaccess perfekt funktioniert! Das soll bezwecken, das nur noch die Download Dateien auf meinem Apache liegen, und die Links dazu geschützt auf meinem gemieteten Webserver! Jedoch würde ich auch hier gern die Download Dateien auf irgendeine weise schützen, sodass sie nur via Link von meinem gemieteten Webserver aus, gedownloadet werden können! Gruss Andy

                      1. hallo,

                        Ich habe zwei Server:
                        1 x Apache Server ( steht zuhause im Keller, mit diesem habe ich auch das htaccess Problem )
                        1 x Gemieteter Webspace 1.5 Giga verwaltet von einem Unternehmen

                        Gut. Das haben sehr viele.

                        Mein Ziel war es eigentlich Dateien sicher zum Download anbieten zu können!

                        Das machst du auf deinem gemieteten Webspace und nirgendwo sonst. Dein eigener Rechner hat damit absolut nichts zu tun.

                        Das soll bezwecken, das nur noch die Download Dateien auf meinem Apache liegen, und die Links dazu geschützt auf meinem gemieteten Webserver!

                        So gehts nicht.

                        Grüße aus Berlin

                        Christoph S.

                        --
                        Visitenkarte
                        ss:| zu:) ls:& fo:) va:) sh:| rl:|
                        1. Hallo

                          Ich merke, ich muss mir da was anderes überlegen! Jedoch lässt mir die Sache mit dem htaccess keine Ruhe! Werde mal ein wenig test! Vielleicht bringe ich es noch hin!

                          Vielen Dank für eure Hilfe! War ein bisschen viel Info für einen Anfänger! Aber hat mir sicher geholfen! Danke und ein schönes Weekend!

                2. hallo,

                  ISt der Eintrag so okay?

                  forbid access to the entire filesystem by default

                  <Directory />
                      Options None
                      AllowOverride All <== HIER!!!!!!!!!!!!!!!!!!!!!!!!
                      Order deny,allow
                      Deny from all
                  </Directory>

                  Nein, das ist nicht ok. Das solltest du alles so lassen, wie es ist.

                  Include /etc/apache2/default-server.conf

                  Hm. Schau da mal rein. Ich weiß nicht, wieso du diese Datei hast, bei mir ist sie nicht vorhanden, obwohl ich dieselbe Installation gemacht habe wie du. Hast du zum Installieren auch bestimmt nicht ein rpm-Paket genommen?
                  In dieser Datei solltest du eine Angabe zu "DocumentRoot" finden. der <Directory>-Container, der dazugehört, ist derjenige, in dem du dein AllowOverride ändern willst.

                  Another way to include your own files

                  The file below is generated from /etc/sysconfig/apache2

                  _Das hier_ ist entscheidend. Schau dir dieses Script /etc/sysconfig/apache2 genau an. _Darin_ wird unter anderem festgelegt, welche Module mit "loadModule" aktiviert werden, und einiges weitere auch. Und dieses Script wird von deiner SUSE bei Systemstart abgearbeitet.

                  Grüße aus Berlin

                  Christoph S.

                  --
                  Visitenkarte
                  ss:| zu:) ls:& fo:) va:) sh:| rl:|
    2. Hi

      Ich kann das Verzeichniss /srv/www finden! Jedoch wenn ich in diesem Verzeichiss änderungen vornehme, werden diese via Browser nicht angezeigt! Wenn ich jedoch dir usr/local/apache2/htdocs/index.html verändere, erscheinen die änderungen beim betrachten via Browser!

      Gruss Andy

      1. hallo,

        Ich kann das Verzeichniss /srv/www finden! Jedoch wenn ich in diesem Verzeichiss änderungen vornehme, werden diese via Browser nicht angezeigt! Wenn ich jedoch dir usr/local/apache2/htdocs/index.html verändere, erscheinen die änderungen beim betrachten via Browser!

        Richtig. Ich hatte allerdings angenommen, daß du deinen Apache über YaST installierst. Dann wäre das so gewesen. Du hast ihn aber anders gebaut, und dann liegen die Standrad-Verzeichnisse eben woanders.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|