2012-02-15 11 views
5

Podążyłem za wskazówkami zawartymi w książce "Kontrola Wersji z Subversion" dotyczącej właściwego sposobu konfigurowania konfiguracji SVN opartej na Apache. Do tej pory mam plik "subversion.conf" w moim katalogu "/etc/httpd/conf.d". W tym pliku zdefiniowałem lokalizację o nazwie "/ svn" i zmapowałem ją do lokalizacji moich repozytoriów subversion "/ x1/svn/(repo1), (repo2), (etc)". Aby to osiągnąć, stworzyłem także użytkownika "svn", który jest właścicielem obszaru repozytoriów i dodał uprawnienia grupowe do Apache, aby repozytoria były dostępne z Apache bez potrzeby ustawiania wszystkiego, co jest własnością Apache (co, jak sądzę, jest dziwnym sposobem rzeczy).Konfigurowanie użytkownika tylko do odczytu dla SVN-Apache

W każdym razie. Tutaj jest problem, z którym mam problem. Chciałbym ustawić "użytkownika", który będę mógł przekazać ludziom w przypadku, gdy chcę zezwolić im na pobranie kopii kodu źródłowego określonej bazy kodu repozytorium. Jest tu kilka poziomów złożoności.

  1. A) pozwalają im zwykłego użytkownika, że ​​stypendia tylko do odczytu dostęp do wszystkich repozytoriów
  2. b) zapewniają szczególne „tylko do odczytu” użytkowników do poszczególnych repozytoriów

Tak czy inaczej, a ja wyobraź sobie, że łatwiej byłoby wyjaśnić, jak wykonać opcję (A), jak mogę to zrobić, biorąc pod uwagę konfigurację, którą skonfigurowałem na mój serwer WWW w chwili obecnej? Poniżej znajduje się kopia mojego „subversion.conf” pliku, który działa dobrze, jednak wymaga, aby każdy użytkownik dostępu do pożądanych repozytoriów mieć pełny dostęp:

<Location /svn> 
    DAV svn 
    SVNParentPath /x1/svn 

    # Require SSL connection for password protection. 
    # In order to do this Apache needs to use a self-signed certificate 
    # Talk to Cordel and/or consult Apache Docs and OpenSSL docs 
    # SSLRequireSSL 

    AuthType Basic 
    AuthName "Subversion Repository" 
    AuthUserFile /etc/svn-auth-file 
    Require valid-user 
    </Location> 

tak - w jaki sposób można dodać jednego użytkownika ogólne, które być tylko do odczytu dla wszystkich repozytoriów znajdujących się w SVNParentPath (opcja A)? A dla dodatkowego kredytu - jak mogę utworzyć unikalnych użytkowników tylko do odczytu dla poszczególnych repozytoriów (opcja B). A wszystko to przy zachowaniu użytkowników, którzy muszą się uwierzytelnić, aby uzyskać pełny dostęp do odczytu i zapisu we wszystkich repozytoriach.

Próbowałem to osiągnąć na własną rękę, jednak próbując przetrawić znaczenie metod "Limit", jestem zaskoczony brakiem prostego wyjaśnienia, które metody są dostępne i jaka jest każda metoda w rzeczywistości dotyczy konfiguracji SVN/Apache. Mam na myśli zdrowy rozsądek mówi mi, że GET jest GET (tylko do odczytu) i że POST jest operacją zapisu, ale to jest tylko zdrowy rozsądek. Zbyt długo programowałem, aby założyć, że niektóre A-Hole nie stworzyły operacji GET z możliwością zapisu danych. To jest moje kłopotliwe położenie. Czy ktoś może rzucić nieco światła?

Dziękujemy!

Odpowiedz

7

Spójrz do pliku Path Based Authorization gdzie można zdefiniować tylko do odczytu użytkownika za pomocą:

[/] 
username = r 

lub można zdefiniować użytkownika dla różnych repozytoriów

[repo1:/] 
username = r 

[repo2:/] 
username = r 

Aby osiągnąć powyższe musisz dodać następujące dane do swojej konfiguracji Apache:

LoadModule authz_svn_module path/to/mod_authz_svn.so 
... 
AuthzSVNAccessFile /path/to/access/svnaccess 
+0

Dziękuję - pięknie się spisałeś! –

+0

Po raz pierwszy miałem problem z tym, że nazwa repozytorium nie została rozpoznana. Powodem było to, że użyłem SVNPath, a nie SVNParentPath w pliku konfiguracyjnym. Po przełączeniu na SVNParentPath działa ładnie! \ –

+1

Warto też [wyłącza kontrole oparte na ścieżce] (http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.httpd.authz .pathauthzoff), jeśli ich nie potrzebujesz, ponieważ poprawi to wydajność. – AdamS

Powiązane problemy