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ąć?

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 .


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 .


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.


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.


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.


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.