Moin!
ich möchte bei unserem Webserver die Userverwaltung zentralisieren.
Da der Zugriff bei uns über die IP-Adresse des Clients gewährt wird haben wir eine relativ lange Liste von IPs in immer mehr Ordnern. Die Pflege dieser Listen ist somit inzwischen sehr aufwändig geworden.Jetzt suche ich eine Möglichkeit eine zentral am Webserver abgelegte Datei in die Einzelnen .htaccess-Files einzubinden (wie include bei php). Weiß jemand wie ich das hinbekomme?
Deine Beschreibung ist leider noch nicht so konkret, wie ich es mir wünschen würde - außerdem geben die gegebenen Informationen Anlaß zur Spekulation, ob das, was du da produziert hast, wirklich sicher ist, oder mit Leichtigkeit umgangen werden könnte.
.htaccess kennt keinen Include-Befehl. Diesbezügliche Versuche sind also sinnlos. Gewöhnlich verwendet man eine zentrale Passwortdatei und ggf. auch noch eine zentrale Gruppendatei, auf welche in den einzelnen Verzeichnissen dann verwiesen wird - auf diese Weise kann man den Zugriff auf ein Verzeichnis nur für in der Passwortdatei registrierte Benutzer erlauben, oder nur für eine bestimmte Gruppe von Benutzern, oder nur für ganz bestimmte Benutzer. Es wird aber zwingend ein Passwort verlangt.
Da du aber die IP-Adresse als Kriterium verwenden willst, frage ich dich: Im Internet oder im Intranet?
Im Internet mag es ja vielleicht noch vernünftig sein, sofern wirklich alle Benutzer eine feste IP-Adresse haben, jeder, der durch diese IP zugreifen kann, das auch darf, und alle zu blöd sind, sich einen Benutzernamen und Passwort zu merken.
Im Intranet hingegen wäre diese Methode absolut kein Problem, da man an seinem eigenen Rechner die IP-Adresse grundsätzlich beliebig verstellen kann auf die Adressen, welchen der Zugriff erlaubt ist, und es würde wahrscheinlich niemandem auffallen - zumindest dann nicht, wenn der Originalrechner zu dem Zeitpunkt ausgeschaltet ist.
Trotzdem dürfte es eine Lösung geben. Du kannst zentral im Hauptverzeichnis die IP-Liste in der .htaccess verwalten und setzt bei erlaubtem Zugriff eine Environment-Variable:
http://httpd.apache.org/docs-2.0/mod/mod_setenvif.html#setenvif
SetEnvIf Remote_Addr "192\.168\.123\.45" let_me_in
SetEnvIf Remote_Addr "10\.0\.0\.23" let_me_in
# ... und so weiter für jede IP
Achte darauf, dass der Suchausdruck in Anführungszeichen ein regulärer Ausdruck ist, gewisse Zeichen wie Punkte haben normalerweise Sonderbedeutung und müssen zwingend escaped werden, wenn sie als tatsächliches Zeichen gelten sollen.
In jedem einzelnen Verzeichnis kannst du dann mit
Oder Allow,Deny
Allow from env=let_me_in
Wenn du je IP mehrere Zeilen mit unterschiedlichen Environment-Variablen setzt, kannst du auch Zugriffsbereiche realisieren, indem der eine Bereich z.B. die Existenz von "nur_angestellte" und der zweite Bereich die Existenz von "nur_chefs" prüft.
- Sven Rautenberg