2009-02-18 15 views
9

Używam repozytorium Subversion hostowanego na Dreamhostu dla projektu.Jak uniemożliwić użytkownikowi subversion dostęp do części repozytorium?

Chciałbym umożliwić dostęp do niektórych użytkowników na zasadzie ograniczonej. Przynajmniej chciałbym umożliwić niektórym użytkownikom dostęp tylko do odczytu, ale najlepiej byłoby uniemożliwić niektórym użytkownikom oglądanie niektórych części repozytorium. Nie mogę znaleźć uprawnień użytkowników wymienionych w dokumentach internetowych dla Subversion, ale zakładam, że tam jest?

Jestem przyzwyczajony do używania Perforce, więc to, czego chcę, to to, co robi p4 protect dla Perforce.

Dzięki.

Odpowiedz

12

Spójrz na plik authz w katalogu conf /. Możesz ustawić uprawnienia dla konkretnych użytkowników i określonych katalogów. W svnserve.conf możesz określić, czy anonimowi użytkownicy mają dostęp do odczytu, czy nie.

Oto przykład z repozytorium kopalni:

[groups] 
project1_team = dave, john, andy 

[/] 
* = 
dave = rw 

[/project1] 
@project1_team = rw 

[/project2] 
andy = r 

Co tu się dzieje jest to, że określona grupa użytkowników posiadających pełny dostęp do projektu1; dave (który zdarza się być ja) ma pełny dostęp do całego repozytorium, podczas gdy andy ma dostęp tylko do odczytu do projektu2.

+0

Zauważ, że musisz ustawić 'AuthzSVNAccessFile <ścieżka do authz>' w pliku dav_svn.conf, jeśli używasz mod_dav_svn apache'a – fishbone

0

Nie znam konfiguracji, której używa Dreamhost, ale typowym sposobem wymuszania uprawnień jest użycie mechanizmów uwierzytelniania Apache. Oto relevant page z dokumentacji Subversion.

0

Na Subversion Book masz odpowiedź right here.

Poważnie, ludzie: kiedy powstało z mody czytanie nawet najbardziej podstawowej dokumentacji przed dokuczaniem innym?

3

Na serwerach internetowych istnieje zazwyczaj plik konfiguracyjny (który można nazwać dowolnym), aby uruchomić authorization. Każde repozytorium ma listę jak
[my-repozytorium: /]
myuser = rw

co dałoby 'myuser' czytać & zapisu pozwolenie na całej repozytorium. Można również zrobić:

[moja-repository/just-to-Folder /:]
somejerk: r

Co powinien robić, co chcesz.

0

Zobacz zaakceptowaną odpowiedź powyżej. Jednak w przypadku specyfikacji Dreamhost w katalogu ~/svn istnieją dwa pliki dla każdego repozytorium repo_name.access i repo_name.passwd. Gdzie repo_name to nazwa, którą dałeś repozytorium. Możesz edytować plik repo_name.access zgodnie z opisem w zaakceptowanej odpowiedzi.

Nie zapomnij o chmod 644 repo_name.access po edycji, aby apache mógł uzyskać do niego dostęp.

2

Jeśli używasz SVN i Apache razem, wykonaj następujące czynności:

zdawać sobie sprawę, że najlepszym poziom uprawnień można zarządzać będzie na podstawie jednej repozytorium.Zakładam, że masz repository1 i repository2

1- wprowadzić odpowiednie użytkownika (-ów) dla każdego repozytorium w oddzielnym pliku:

sudo htpasswd -c -m /etc/apache2/dav_svn_REPOSITORY1.passwd $user_name_for_repository1 
sudo htpasswd -c -m /etc/apache2/dav_svn_REPOSITORY2.passwd $user_name_for_repository2 

Jeśli chcesz dodać więcej użytkowników do każdego pliku, usuń -c przeprowadzoną dowództwo. ponieważ służy tylko do utworzenia pliku po raz pierwszy.

2- Edit następujący plik:

nano /etc/apache2/mods-available/dav_svn.conf 

będziesz mieć przekrój takiego:

<Location /svn> 
    SVNPath $your svn repository path 
    AuthType Basic 
    AuthName "Subversion Repository" 
    AuthUserFile /etc/apache2/dav_svn.passwd 
    Require valid-user 
    SSLRequireSSL 
</Location> 

Kopiuj ten blok dla każdego repozytorium masz, w naszym przypadku trzeba jeszcze jeden blok lubię to . Teraz pozbyć (Usuń) powyżej bloku i dodaj następujący blok które są zmieniane kopie powyżej jednego:

<Location /svn/repository1> 
    SVNPath $your svn repository1 path 
    AuthType Basic 
    AuthName "Subversion Repository" 
    AuthUserFile /etc/apache2/dav_svn_REPOSITORY1.passwd 
    Require valid-user 
    SSLRequireSSL 
</Location> 
<Location /svn/repository2> 
    SVNPath $your svn repository2 path 
    AuthType Basic 
    AuthName "Subversion Repository" 
    AuthUserFile /etc/apache2/dav_svn_REPOSITORY2.passwd 
    Require valid-user 
    SSLRequireSSL 
</Location> 

3- Zapisz plik i ponownie uruchomić Apache.

Powiązane problemy