Passwortschutz für Webverzeichnisse

ew_wolf

ew_wolf

Tripel-As
Moin, Moin alle zusammen.

Ich versuche gerade bei meinem Webserver ne Passwortschutz für verschiedene Webverzeihnisse einzustellen. Laut dem Buch "Linux" von Michael Koffler sollte man in einem Verzeichnis (nicht im Web-Verzeichnis) folgenden Befehl eingeben:
Code:
htpasswd -c <Dateiname.pwd> <username>
Bei Appache2 sollte dieser Befehl wie folgt lauten:
Code:
htpasswd2 -c <Dateiname.pwd> <username>
Nun bei Ubuntu geht nur der erste Befehl obwohl hier der Apache2 genutzt wird.

Weiterhin muss in der httpd.conf Einträge ähnlich den folgenden vorgenommen werden.
Code:
Alias /javascript_ajax "/var/www/javascript_ajax"
<Directory /var/www/javascript_ajax">
        AuthType Basic
        AuthUserFile <Pfad>/<Passwortdate.pwd>
        AuthName "<username>"
        Require valid-user
        Options Indexes FollowSymLinks
        DirectoryIndex index.html
</Directory>
Alias /knoppix "/var/www/knoppix"
<Directory /var/www/knoppix">
        AuthType Basic
         AuthUserFile <Pfad>/<Passwortdate.pwd>
        AuthName "<username>"
        Require valid-user
        Options Indexes FollowSymLinks
        DirectoryIndex index.html
</Directory>
Der "Alias"-Eintrag und die Einträge "Option" und "DirectoryIndex" habe ich aus einem Beispiel hnzugefügt.

Leider wird nicht nach einem User/Passwort gefragt!
Kann das damit zusammenhängen, dass der in der Passwort-Datei befindliche
User und das dazugehörige PWD identisch mit dem moment lokal eingelogten Nutzer ist?:think:
Wenn nicht woran kann das dann liegen?
 
AllowOverride nicht gesetzt?

Aus der Hüfte geschossen fällt mir dazu "AllowOverride" ein. Du mußt damit für das Verzeichnis, in dem die .htaccess steht, erlauben, daß die Autentifizierung der Default-Konfiguration überhaupt übergangen werden darf.

Versuche mal [noparse]http://dein.server.tld/manual/[/noparse] (oder suche das Apache-Manual auf der Apache-Seite auf...)

Du mußt *innerhalb* der <Directory -Tags mindestens stehen haben:
Code:
<Directory /Pfad/zum/Verzeichnis/>
...
AllowOverride AuthConfig
...
Da du über .htaccess noch mehr regeln kannst als nur Paßwortschutz, kannst du evtl. auch gleich "AllowOverride All" setzen. Aber wenn das für's DocumentRoot nicht schon erlaubt ist (was man nicht sollte..), mußt du es explizit setzen oder eine .htaccess bleibt ohne Wirkung!

Diese Option wird vererbt, d.h. in Unterverzeichnissen mußt du sie nicht wiederholen. Wenn du sie in einem Unterverzeichnis einschränken, erweitern oder aufheben willst, mußt du es dort allerdings dann tun (und bedenken, daß sich die neue Einstellung dann ab *dort* vererbt..)

Die Apache-Doku sagt aber auch:
Apache-Doku schrieb:
In general, you should never use .htaccess files unless you don't have access to the main server configuration file. There is, for example, a prevailing misconception that user authentication should always be done in .htaccess files. This is simply not the case. You can put user authentication configurations in the main server configuration, and this is, in fact, the preferred way to do things.
.htaccess-Dateien sind einfach zu handeln und ich folge dem obigen Rat auch nicht immer (besonders in Fällen, wo ich öfters ad hoc in einem Verzeichnis etwas umschalte..), aber klar machen sollte man sich das schon einmal...
 
Die Option
Code:
AllowOverride AuthConfig
hilft zwar aber leider nur einmal. Der user wird nur einmal beim Start der abgefragt, wenn man zum z.B. eine andere Seite anwählt erfolgt keine andere Abfrage auch nicht einen neuer Tab führ dazu. Erst wenn ich den Web-Browser schließe und neu öffne erscheint wieder die Abfrage.

Wie ist das mit der Datein ".htaccess" gemeint? muss ich die manuell anlegen? Ist es egal wo die Datei liegt, hautpsächlich außerhalb der WEB-Verzeichnisse?
 
Hilft dir das weiter?

Erst wenn ich den Web-Browser schließe und neu öffne erscheint wieder die Abfrage.
Ist eigentlich normal, dass der Browser sich die Daten fuer eine Session merkt.
 
such mal ne anleitung bei google zu der .htacces oder such das php-script xssen damit geht das auch
 
Mag mal jemand die von mir zitierte Doku beachten, in der steht, daß das mit .htaccess zwar *geht*, aber nicht gemacht werden sollte, wenn es anders geht?

Ob AllowOverride in der .htaccess steht oder in der Haupt-Config...

Auch dort muß in einem <Directory>-Abschnitt AllowOverride vorkommen und es erlauben, wenn vorher für "/" (=DocumentRoot, nicht "/" Dateisystem) es (noch) nicht erlaubt war. Sonst hat es keinen Effekt.

Allerdings läuft das auf Sessionbasis, soweit ich weiß, deshalb der Effekt mit dem "Einmal-Schutz" (sonst würde jeder Reload zu einer nervigen neuen Paßwortabfrage führen, jedes Neuladen eines Frames / Iframes / Javascript-Events, das etwas neu läd... Reload von $PHP_SELF... ein erneutes Login erfordern).

Geht das überhaupt anders mit Apache-Autentifizierung?
 
Zuletzt bearbeitet:
Nr 1:
Allerdings läuft das auf Sessionbasis, soweit ich weiß, deshalb der Effekt mit dem "Einmal-Schutz" (sonst würde jeder Reload zu einer nervigen neuen Paßwortabfrage führen, jedes Neuladen eines Frames / Iframes / Javascript-Events, das etwas neu läd... Reload von $PHP_SELF... ein erneutes Login erfordern).

Geht das überhaupt anders mit Apache-Autentifizierung?

Im Grunde ist das ja richtig mit den Sessions. Aber ich habe zwei WEB-Verzeichnisse mit zwei seperaten Nutzer konfiguriert. Nun tritt der Effekt auf, dass ich beim wechsel in das andere WWW-Verzeichniss keine Abfrage für den anderen User. ICh brauch mich nur einmal Authentifizieren. Wenn ich die andere URL eingebe erwarte ich eigendlich, dass der User und das PW für dieser Verzeichniss verlanngt wird.

Nr. 2
Was hat es mit den "AuthGroupFile" aufsich? Was für Gruppen sind gemeint (nicht die Betriebssystem-Gruppen)?
 
Nr. 2
Was hat es mit den "AuthGroupFile" aufsich? Was für Gruppen sind gemeint (nicht die Betriebssystem-Gruppen)?
Ich verweise mal wieder auf meine Links... :-|
Und nein, es sind nicht die Betirebsgruppen, die Namen koenne freigewaehlt werden.
 
Zuletzt bearbeitet:
irgendwie stehe ich auf den Schlauc X(
Ich hab wie in dem Link zu finden ist das php-skript für das Auslesen des Pfades geschrieben und in das Verszeichniss kopiert, wo meine einzelnen WWW-Ornder liegen. Leider gibt mir das Skipt nur den Pfad aus wo es liegt.
ICh denke wenn meine seine Seite bei einem Provider liegen hat wird das richtig sein. Da ich aber erstmla lokal an meiner Linux-Büchse arbeit, frag ich mich ob ich einffach .htaccess manuell erstellen kann? Hab ich das richtig verstanden?
 
wo meine einzelnen WWW-Ornder liegen. Leider gibt mir das Skipt nur den Pfad aus wo es liegt.
Soll es ja auch, ein wenig mitdenken ist schon erlaubt ;), und wenn du selber weist wie deine Ordnerstruktur ab dem / aussieht, kann der Schritt auch entfallen.

Da ich aber erstmla lokal an meiner Linux-Büchse arbeit, frag ich mich ob ich einffach .htaccess manuell erstellen kann?
Ist salopp gesagt wumpe wo der Server steht, aendert sich nicht wirklich was an dem Apache ;)
frag ich mich ob ich einffach .htaccess manuell erstellen kann?
Natuerlich kannst du.
 
Zuletzt bearbeitet:
Warum liest du nicht einfach mal die Apache-Doku, in der das alles sehr ausführlich drin steht? Oder in selfhtml steht dazu auch einiges.

So, wie du in dem User-File Paßwörter anlegen kannst, kannst du eine Gruppen-Datei anlegen. So, wie "Require valid , user" dann ein Paßwort verlangt, verlangt "Require group <Gruppenname>" eins von den Leuten aus dem User-File, die in der Gruppenliste stehen. Andere akzeptiert es nicht, auch wenn sie im User-File stehen.
 
Zuletzt bearbeitet:
Warum liest du nicht einfach mal die Apache-Doku, in der das alles sehr ausführlich drin steht? Oder in selfhtml steht dazu auch einiges.
Da bin ich schon dabei, aber einiges verstehe ich halt nicht ganz oder ich will sichergehen, dass ich es verstanden habe.

So, wie du in dem User-File Paßwörter anlegen kannst, kannst du eine Gruppen-Datei anlegen. So, wie "Require valid , user" dann ein Paßwort verlangt, verlangt "Require group <Gruppenname>" eins von den Leuten aus dem User-File, die in der Gruppenliste stehen. Andere akzeptiert es nicht, auch wenn sie im User-File stehen.
Schön und Gut, wenn ich das gleiche Kommando nutze, dann wird natütlich das Gruppenfille mit PWD (<gruppe>:<pwd>) angelegt, aber wie wird da ein User zu er Gruppe hinzugefügt?
 
Schön und Gut, wenn ich das gleiche Kommando nutze, dann wird natütlich das Gruppenfille mit PWD (<gruppe>:<pwd>) angelegt, aber wie wird da ein User zu er Gruppe hinzugefügt?
Falsch. Gruppen selber haben keine Passwoerter, nur die User in ihr haben welche. Gruppen sind nur zusaetzlich zu den Usern. Das sieht man auch sehr schoen an den von mir erstellten Tabellen... ;)

Oder an diversen anderen Beispielen in den hier erwaehnten Seiten.
 
Auch Gruppen können Passwörter haben. Siehe 'man gpasswd'. Wenn ich mich recht entsinne liess sich das auch im Apache irgendwie nutzen.
 
Auch Gruppen können Passwörter haben. Siehe 'man gpasswd'. Wenn ich mich recht entsinne liess sich das auch im Apache irgendwie nutzen.
Das ist aber nicht direkt Apache-Autentifizierung? Sondern die System-Gruppen? Bei Apache ist eine Gruppendatei doch einfach eine Liste nach dem Muster
Code:
Gruppe1: Mitglied1 Mitglied2 Mitglied3 Mitglied4
Gruppe2: Mitglied2 Mitglied4
und deren Paßwörter stehen in der User-Datei, entweder verschlüsselt oder nicht mal das.
 
Also wenn ich für jeden HTTP-Nutzer ne seperate PWD-Datei anlege und somit in der http.conf verschiedene Pfade, bzw. verschiedene PWD-Datein angebe, dann funktioniert auch beim Wechsel des WebSpaces die Abfrage nach der Authentifizierung.

Ich habe in der Apache-Doku festgestellt, dass für jedem WWW-Ordner eine seperade ".htaccess"-Datei angelegt wird. Liegt der Grund darin begründet, dass bei jedem Zugriff auf dieses Verzeichniss diese Datei erneut eingelesen wird und somit Änderungen sohne Neustart von Apache (wie bei Änderugnen in der http.conf) übernommen werden?
 
Was heißt für jeden Ordner eine neue .htaccess?

Wenn du in einem Ordner eine .htaccess hast, gilt die auch rekursiv für alle Unterordner, sofern in denen nicht irgendwie eine andere .htaccess drinne steht. Und ja, du brauchst keinen Neustart, wenn du das über .htaccess machst.
Allerdings solltest aufpassen, dass die User die .htaccess nicht editieren können, sonst kommen die noch auf dumme Gedanken.
 
Wenn du in einem Ordner eine .htaccess hast, gilt die auch rekursiv für alle Unterordner, sofern in denen nicht irgendwie eine andere .htaccess drinne steht.
Völlig richtig, siehe unten zur "Vererbung".

Und ja, du brauchst keinen Neustart, wenn du das über .htaccess machst.
Genau, weil die eben zur Laufzeit eingelesen werden. Aber nur, wenn das Verzeichnis das in der Hauptconfig überhaupt darf. Wenn es das darf, kann es das auch weiter geben oder für Unterverzeichnisse zurück nehmen.

Allerdings solltest aufpassen, dass die User die .htaccess nicht editieren können, sonst kommen die noch auf dumme Gedanken.
Das ist dann wohl einer der Gründe, warum vom Gebrauch abgeraten wird. Denn manchmal hat man ja die Situation, daß User über FTP Dateien hochladen können, manchmal auch mit Punkt vorne, also .htaccess (die also durch Rechte zusätzlich schützen...)

Die Hauptkonfiguration ist in einem für User nicht zugänglichen Verzeichnisbaum. .htaccess ermöglicht große Flexibilität auf Kosten der gesamten Sicherheit. Ich bevorzuge das, wenn ich in einem bestimmten Verzeichnis flexibel sein möchte, ohne ganze Verzeichnisbaumrechte in der Apache-Config dafür ändern zu müssen. Wenn das einigermaßen statisch ist, wäre die Apache-Config aber wohl der bessere Ort.

BTW, wenn man die ändert, reicht normalerweise ein "reload" statt eines Neustarts von Apache, also Init-Script nicht mit "restart" sondern mit "reload" aufrufen....
 

Ähnliche Themen

Apache /var/www zu /home/ich/www wechseln

svn import "500 Internal Server Error"

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

JBidWatcher: Problem bei loading Auctions in Verbindung mit mySQL

Windows clients können nicht mehr auf lange laufendes System zugreifen

Zurück
Oben