2008-09-17 10 views
5

Czy ktoś wie, czy można używać wyrażeń regularnych w ramach dyrektywy DirectoryMatch Apache? Chciałbym zrobić coś takiego:Czy można zastosować wyodrębnianie i zastępowanie za pomocą dyrektywy Apache DirectoryMatch?

<DirectoryMatch ^/home/www/(.*)> 
    AuthType Basic 
    AuthName $1 
    AuthUserFile /etc/apache2/svn.passwd 
    Require group $1 admin 
</DirectoryMatch> 

, ale jak dotąd nie miałem żadnych sukcesów.

W szczególności próbuję utworzyć oparte na grupach uwierzytelnianie HTTP dla poszczególnych katalogów/vhostów na serwerze w Apache 2.0.

Na przykład witryna A, wskazująca na/home/www/a, będzie dostępna dla wszystkich użytkowników w grupie admin i grupie a, strona b at/home/www/b będzie dostępna dla wszystkich użytkowników w grupie admin i grupa b, itp. Chciałbym zachować wszystko na podstawie nazwy katalogu, aby móc łatwo skrypty dodając użytkowników htpasswd do właściwych grup i zautomatyzować to tak bardzo, jak to możliwe, ale inne sugestie dotyczące rozwiązania problemu są z pewnością mile widziane.

Odpowiedz

3

Możesz zająć się problemem z zupełnie innej perspektywy: włącz moduł perla i dołącz do niego trochę skryptu perl w twoim httpd.conf. Następnie można zrobić coś takiego:

<Perl> 
my @groups = qw/ foo bar baz /; 
foreach (@groups) { 
    push @PerlConfig, qq| <Directory /home/www/$_> blah </Directory> |; 
} 
</Perl> 

ten sposób można nawet przeczytać grup i innych informacji z bazy danych lub po prostu globbing/home/www lub cokolwiek innego pieści cię kręci.

+1

Jest to niezwykle przydatne, ale prawie "nieograło się", ponieważ każde wyszukiwanie zawierające Perl i Apache kończy się mnóstwem odpowiedzi na to, jak Apache można skonfigurować do uruchamiania skryptów cgi. Odsyłacz do innych walczących użytkowników Google'a: https://perl.apache.org/docs/2.0/api/Apache2/PerlSections.html – bjarneh

0

Co próbujesz zrobić, wygląda bardzo podobnie do per-user home directories. Sposób, w jaki Apache sobie z tym radzi, to poprzez uprawnienia do systemu plików i .htaccess files. Nie sądzę, że jest jakikolwiek sposób na wykorzystanie przechwytywania regex w załączonych dyrektywach (AuthName itp.).

Powiązane problemy