Jak skonfigurować kontrolę dostępu w SVN?

84

Skonfigurowałem repozytorium używając SVN i wgranych projektów. Nad tymi projektami pracuje wielu użytkowników. Ale nie każdy potrzebuje dostępu do wszystkich projektów. Chcę ustawić uprawnienia użytkowników dla każdego projektu.

Jak mogę to osiągnąć?

user15425
źródło

Odpowiedzi:

85

W folderze svn \ repos \ YourRepo \ conf znajdziesz dwa pliki, authz i passwd . To są dwa, które musisz dostosować.

W pliku passwd musisz dodać nazwy użytkownika i hasła. Zakładam, że już to zrobiłeś, ponieważ masz ludzi, którzy go używają:

[users]
User1=password1
User2=password2

Następnie chcesz przypisać uprawnienia zgodnie z plikiem autoryzacji :

Utwórz żądane grupy koncepcyjne i dodaj do nich osoby:

[groups]
allaccess = user1
someaccess = user2

Następnie wybierz, jaki mają dostęp zarówno z poziomu uprawnień, jak i projektu.

Dajmy więc naszym facetom „pełny dostęp” cały dostęp z poziomu głównego:

[/]
@allaccess = rw

Ale daj tylko naszym facetom z „pewnym dostępem” dostęp tylko do odczytu do jakiegoś projektu niższego poziomu:

[/someproject]
@someaccess = r

Znajdziesz także prostą dokumentację w plikach authz i passwd .

Stephen Bailey
źródło
8
Odpowiednia strona podręcznika to: svnbook.red-bean.com/en/1.7/…
ErichBSchulz.
1
Uwaga: nie zadziała, jeśli uzyskasz dostęp do repozytorium bezpośrednio przez ssh (bez svnserve)
ALex_hha,
Kiedy daję użytkownikowi na przykład jeden folder w repozytorium, użytkownik może uzyskać dostęp do tego folderu tylko za pomocą bezpośredniego łącza. Czy użytkownik może dodać repozytorium i wyświetlane są mu tylko przypisane do niego foldery? Dziękuję za odpowiedź .
maoanz
grupy są nazywane @groupnametym, co mnie ugryzło podczas definiowania reguł, jest to doskonałe w twoich przykładach, po prostu wskazując.
Wolfeh
28

@Stephen Bailey

Aby uzupełnić swoją odpowiedź, możesz również przekazać prawa użytkownika kierownikowi projektu za pośrednictwem zwykłego pliku tekstowego w repozytorium.

Aby to zrobić, skonfiguruj swoją bazę danych SVN z domyślnym authzplikiem zawierającym:

###########################################################################
# The content of this file always precedes the content of the
# $REPOS/admin/acl_descriptions.txt file.
# It describes the immutable permissions on main folders.
###########################################################################
[groups]
svnadmins = xxx,yyy,....

[/]
@svnadmins = rw
* = r
[/admin]
@svnadmins = rw
@projadmins = r
* =

[/admin/acl_descriptions.txt]
@projadmins = rw

Ten domyślny authzplik upoważnia administratorów SVN do modyfikowania widocznego zwykłego pliku tekstowego w repozytorium SVN o nazwie „/admin/acl_descriptions.txt” , w którym administratorzy SVN lub kierownicy projektów będą modyfikować i rejestrować użytkowników.

Następnie ustawiasz punkt zaczepienia przed zatwierdzeniem, który wykryje, czy wersja składa się z tego pliku (i tylko z tego pliku).

Jeśli tak, skrypt tego przechwytu sprawdzi zawartość zwykłego pliku tekstowego i sprawdzi, czy każda linia jest zgodna ze składnią SVN.

Następnie hak po zatwierdzeniu zaktualizuje \conf\authzplik z konkatenacją :

  • authzplik SZABLON przedstawiony powyżej
  • zwykły plik tekstowy /admin/acl_descriptions.txt

Pierwsza iteracja jest wykonywana przez administratora SVN, który dodaje:

[groups]
projadmins = zzzz

Zatwierdza swoją modyfikację, a to aktualizuje authzplik.

Następnie kierownik projektu „zzzz” może dodawać, usuwać lub deklarować dowolną grupę użytkowników i dowolnych użytkowników, których chce. Zatwierdza plik, a authzplik jest aktualizowany.

W ten sposób administrator SVN nie musi indywidualnie zarządzać wszystkimi użytkownikami dla wszystkich repozytoriów SVN .

VonC
źródło
27

Jeden chwyt, który mnie złapał:

[repos:/path/to/dir/] # this won't work

ale

[repos:/path/to/dir]  # this is right

Nie musisz umieszczać końcowego ukośnika w katalogu, w przeciwnym razie zobaczysz 403 dla żądania OPTIONS.

Chris Burgess
źródło
8

Możesz użyć svn + ssh :, a wtedy opiera się to na kontroli dostępu do repozytorium w podanej lokalizacji.

W ten sposób hostuję repozytorium grup projektowych na moim uniwersytecie, gdzie nie mogę skonfigurować niczego innego. Samo posiadanie katalogu należącego do grupy i uruchomienie w nim svn-admin (lub cokolwiek to było) oznacza, że ​​nie musiałem wykonywać żadnej konfiguracji.

Matthew Schinckel
źródło
To przerażająca odpowiedź. Ta metoda ssh jest słabo udokumentowana i wydaje się działać tylko w systemie Linux.
user1040323
1
Po prostu nieprawda. Wystarczy uruchomić demona SSH na swoim serwerze Windows, a svn + ssh działa w systemie Windows dokładnie tak samo, jak w przypadku Linuksa. Istnieje wiele samouczków, które wyjaśniają, jak uruchomić SSH na komputerze z systemem Windows.
Chuck Wolber
Drogi @użytkowniku1040323, istnieją inne platformy inne niż Linux, inne niż Windows: jestem prawie pewien, że komputer, na którym pracowałem, nie był Linuksem, ale jakimś wariantem BSD.
Matthew Schinckel
5

Chociaż sugerowałbym, że podejście Apache jest lepsze, SVN Serve działa dobrze i jest dość proste.

Zakładając, że repozytorium nazywa się „my_repo” i jest przechowywane w C: \ svn_repos:

  1. Utwórz plik o nazwie „passwd” w „C: \ svn_repos \ my_repo \ conf”. Ten plik powinien wyglądać następująco:

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. W C: \ svn_repos \ my_repo \ conf \ svnserve.conf ustaw:

    [general]
    password-db = passwd
    auth-access=read
    auth-access=write
    

Zmusi to użytkowników do logowania się w celu odczytu lub zapisu w tym repozytorium.

Wykonaj te kroki dla każdego repozytorium, uwzględniając tylko odpowiednich użytkowników w passwdpliku dla każdego repozytorium.

RB.
źródło
Uwaga: hasła są przechowywane w postaci zwykłego tekstu w pliku konfiguracyjnym SVN!
AVA
3

Najlepszym sposobem jest skonfigurowanie Apache i ustawienie dostępu przez niego. Poszukaj pomocy w książce svn . Jeśli nie chcesz używać Apache, możesz również wykonać minimalistyczną kontrolę dostępu za pomocą svnserve.

Mladen Mihajlovic
źródło
0

Apache Subversion obsługuje autoryzację opartą na ścieżkach, która pomaga konfigurować szczegółowe uprawnienia dla kont użytkowników i grup na ścieżkach w repozytoriach (pliki lub katalogi). Autoryzacja oparta na ścieżkach obsługuje trzy poziomy dostępu - bez dostępu, tylko do odczytu i do odczytu / zapisu.

Uprawnienia do autoryzacji na podstawie ścieżek są przechowywane w plikach autoryzacji na repozytorium lub na serwer o specjalnej składni. Oto przykład z SVNBook:

[calc:/branches/calc/bug-142]
harry = rw
sally = r

Jeśli potrzebujesz złożonej struktury uprawnień z wieloma ścieżkami i kontami, możesz skorzystać z narzędzi do zarządzania uprawnieniami opartego na graficznym interfejsie użytkownika, udostępnianych przez VisualSVN Server:

  • Administratorzy serwerów mogą zarządzać uprawnieniami użytkowników i grup za pomocą konsoli VisualSVN Server Manager lub PowerShell,
  • Użytkownicy niebędący administratorami mogą zarządzać uprawnieniami za pośrednictwem RepoCfg.

Uprawnienia do repozytorium w programie VisualSVN Server Manager wprowadź opis obrazu tutaj

Uprawnienia do repozytorium w programie PowerShell wprowadź opis obrazu tutaj

Użytkownicy niebędący administratorami mogą zarządzać uprawnieniami za pomocą narzędzia RepoCfg wprowadź opis obrazu tutaj

bahrep
źródło