Zugriffsbeschränkung per .htaccess

bled

Erfahrenes Mitglied
Hallo alle,

ich kämpfe momentan mit folgendem Problem:
Ich benutze Apache (2.2) als lokalen (Entwicklungs)Server unter Linux. Das DocumentRoot Verzeichnis ist entweder passwortlos lokal aufrufbar, oder per Passwort von außen. Dazu habe ich im DocumentRoot eine .htaccess Datei mit etwa diesem Inhalt angelegt:
Code:
AuthType Basic
AuthName "restricted area"
AuthUserFile /var/www/.htusers
Require valid-user

Order allow,deny
Allow from localhost
Satisfy any
Ich habe nun ein Unterverzeichnis im DocumentRoot, das von außen überhaupt nicht, lokal aber ohne Passwort erreichbar sein soll.
Ich habe das mit einer .htaccess Datei in diesem Unterverzeichnis und dem Inhalt versucht:
Code:
Order allow,deny
Allow from localhost
Satisfy all
Leider werden wohl durch das "Satisfy all" die Directiven des Oberverzeichnisses mitbeachtet, sodass ich nun von außen zwar nicht reinkomme, lokal aber das Passwort für das DocumentRoot Verzeichnis brauche. Stelle ich das auf "Satsify any", so kommt man dann auch von außen rein. (Zwar braucht man das Passwort, das soll aber überhaupt nicht möglich sein, auch nicht mit Passwort.)
Ich habe nun ewig herumexperimentiert, mir die Dokumentation von Apache durchgelesen, aber leider keine Lösung gefunden. Hat hier vielleicht irgendjemand eine Idee, wie man das lösen könnte?
 
Moin,

hast du es schon mal so probiert(im Unterverzeichnis)
Code:
Order deny,allow
Deny From All
Allow from localhost
 
Ja, das habe ich schon ausprobiert. In dieser Kombination komme ich von außen immer noch mit Passwort rein. Das liegt wohl an dem "Satisfy any" des übergeordneten Verzeichnisses. Wenn ich an deinen Vorschlag noch ein "Satisfy all" anhänge, dann komme ich von außen gar nicht rein, werde dann aber lokal logischerweise wieder nach dem Passwort gefragt.
Ich habe mich darüber auch mal mit einem Freund unterhalten. Es sieht wohl so aus, als ginge das wirklich nicht so, wie ich es möchte.
Die Möglichkeiten, die ich sehe, wären:
- Direkt in der httpd.conf/apache2.conf oder der Konfigurationsdatei des virtuellen Hosts mit Directory Direktiven herumfummeln (das will ich auf jeden Fall vermeiden)
- Eine Lösung unabhängig vom Server implementieren, also ein Loginsystem (das ist den Stress in diesem Fall wirklich nicht wert)
- Mich damit zufrieden geben, dass ich lokal das Passwort eingeben muss (das werde ich dann wohl auch tun)

Danke trotzdem für die Antwort.
 
Naja, mal angenommen, wenn jemand auf das Unterverzeichnis von aussen zugreifen, ist dir das egal, ob da die Login-Box kommt oder nicht, solange niemand herein kommt, dann müsstest du imUnterverzeichnis bei require nur einen Usernamen angeben, der nicht existiert.

Root:
Code:
AuthType Basic
AuthName "restricted area"
AuthUserFile /var/www/.htusers
Require valid-user

Deny From All
Allow from 127.0.0.1
Satisfy Any
Unterverzeichnis:
Code:
AuthType Basic
AuthName "restricted area"
AuthUserFile /var/www/.htusers
Require Userdernichtexistiert

Deny From All
Allow from 127.0.0.1
Satisfy Any
 
Ich habe das jetzt noch nicht ausprobiert, aber durch das "Satisfy Any" müsste dann doch auch der valide Benutzer aus dem Root genügen. Also würde man wieder von außen reinkommen.
 
... in der Tat, du hast recht. Ich hab es jetzt auch ausprobiert und es funktioniert.
Irgendwie erschließt sich mir die Funktionsweise da nicht wirklich, aber ich bin erst mal froh, dass es so funktioniert.
Danke für die Hilfe.
 
Durch die Direktiven im Unterverzeichnis werden nun alle aus dem übergeordneten Verzeichnis überschrieben, der valid-user aus der Root wird also nicht mehr gefragt, sondern nur noch der Userdernichtexistiert
 
Ich dachte mir schon, dass es so in der Art funktioniert.
Da wäre es praktisch, wenn man nicht nur mit etwas Neuem überschreiben könnte, sondern auch übergeordnete Direktiven löschen könnte. Aber was soll's, so wichtig ist das nun wirklich nicht.
 

Neue Beiträge

Zurück