PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit htaccess Benutzerzugriff sperren



Tasman
08.04.07, 14:12
Hallo,

frohe Ostern an die Linux-Gemeinde!

Ich habe ein seltsames Zugriffs-Problem auf meinem Webserver (Apache2 unter Suse 9.3), an dem ich monentan total verzweifel. Die Apache2-Doku und stundenlanges Googeln konnten leider nicht weiterhelfen. Einen umgekehrten Befehl von require scheint es nicht zu geben.
Zunächst einige meiner Daten:

Freigabe in der oberen Verzeichnisstruktur in /home/user/public_html/ für erteilten Zugriff für die User user1, user2 und user3:

AuthType Basic
AuthName "Login required"
AuthUserFile /home/user/public_html/.htpasswd
<Limit GET POST PUT>
require user user1 user2 user3
</Limit>
Freigabe nur für user1 in der unteren Verzeichnisstruktur /home/user/public_html/unterverzeichnis/:

AuthType Basic
AuthName "Login required"
AuthUserFile /home/user/public_html/unterverzeichnis/.htpasswd
<Limit GET POST PUT>
require user user1
</Limit>
Die .htpasswd-Dateien sind jedweils im gleichen Verzeichnis wie die .htaccess-Dateien und beinhalten im ersten Fall die User user1, user2, user3 und im zweiten Fall nur den User user1

Der Unterschied der beiden .htaccess-Dateien besteht darin, dass im Unterverzeichnis nur noch user1 Zugriff haben soll. Das Problem besteht nun darin, dass im Verzeichnis unterverzeichnis den Usern user2 und user3 die Zugriffsrechte nicht entzogen werden.

Können die oben gewährten Zugriffsrechte nicht per .htaccess in den tiefergelegenen Unterverzeichnissen wieder entzogen werden? :confused:

Habe ich etwas entscheidenes übersehen? Über Eure Hilfe würde ich mich sehr freuen.

temir
09.04.07, 13:28
In der Apache2-Docu suchen nach:


AllowOverride

bzw. ein Ausschnitt aus der config:


# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
AllowOverride None

Tasman
09.04.07, 14:00
Hallo,

vielen Dank für Deine Hilfe temir! :)

AllowOverride steht aktuell auf All. Damit sollten alle Änderungen per .htaccess erlaubt sein. Die erste o.a. .htaccess erlaubt den Zugriff für die Benutzer user1, user2 und user3. Alle anderen Zugriffe werden erfolgreich gesperrt.
Allerdings soll später in einer tieferliegenden .htaccess den Benutzern user2 und user3 das Zugriffsrecht wieder entzogen werden. Komischerweise funktioniert das nicht mit meiner o.a. zweiten .htaccess-Datei.

temir
09.04.07, 14:34
Laut dem (http://httpd.apache.org/docs/2.0/howto/htaccess.html#how):


The configuration directives found in a .htaccess file are applied to the
directory in which the .htaccess file is found, and to all subdirectories thereof.
...

Deswegen sehe ich hier als schnelle Lösung:
/home/user/public_html/unterverzeichnis1/ - für user[1-3] und
/home/user/public_html/unterverzeichnis2/ - für user1 mit entsprechenden .htaccess

Tasman
09.04.07, 14:55
Hallo,

danke für Deine Vorschlag und Deine Hilfe hier im Forum! ;)

Ich habe schon vermutet, dass man damit das Problem umgehen kann. So werde ich es wohl auch einrichten.

Aber ich finde es trotzdem komisch. Das würde doch bedeuten, dass die in der .htaccess angegebenen Rechte/Verbote sich über den ganzen Unterverzeichnisse (in einem Ast) summieren würden. Zwischenzeitlich dachte ich schon, es sei ein Bug im Apache. Nach den ganzen gelesenen Dokus vererben sich die Angaben bis irgendwann eine neue .htaccess gefunden wird, die neue gefundene Rechte/Verbote aktiviert.

Bei diesem genialen Apache-Webserver kann es doch nicht sein, dass Rechte nicht mehr entzogen werden können.

Ahhhh, mein Weltbild wird schon wieder zerstört. :(

temir
09.04.07, 16:47
Mittels Einträgen in der Config (<Directory>) statt "AllowOverride All" und .htaccess in den Subdirs sollte dein Vorhaben möglich sein (siehe die verlinkte Doc-Seite).

Tasman
11.04.07, 22:37
Hallo!

Deswegen sehe ich hier als schnelle Lösung:
/home/user/public_html/unterverzeichnis1/ - für user[1-3] und
/home/user/public_html/unterverzeichnis2/ - für user1 mit entsprechenden .htaccess

Ich habe das nun so wie Du gesagt hast umgebaut. Das scheint wirklich die schnellste und einfachste Alternative zu sein.
Danke nochmals für Deine Hilfe! :)