it-swarm-eu.dev

Wie richte ich die Zugangskontrolle in SVN ein?

Ich habe ein Repository mit SVN eingerichtet und Projekte hochgeladen. An diesen Projekten arbeiten mehrere Benutzer. Aber nicht jeder benötigt Zugriff auf alle Projekte. Ich möchte Benutzerberechtigungen für jedes Projekt einrichten.

Wie kann ich das erreichen?

79
user15425

In Ihrem Ordner svn\repos\YourRepo\conf finden Sie zwei Dateien, authz und passwd. Dies sind die beiden, die Sie anpassen müssen.

In der Datei passwd müssen Sie einige Benutzernamen und Kennwörter hinzufügen. Ich gehe davon aus, dass Sie dies bereits getan haben, da Sie Leute haben, die es verwenden:

[users]
User1=password1
User2=password2

Dann wollen Sie mit der authz Datei die Berechtigungen entsprechend vergeben:

Erstellen Sie die gewünschten konzeptionellen Gruppen und fügen Sie Personen hinzu:

[groups]
allaccess = user1
someaccess = user2

Wählen Sie dann aus, welchen Zugriff sie sowohl auf Berechtigungs- als auch auf Projektebene haben.

Also lasst uns unseren "All-Access" Jungs den Zugriff von der Wurzel aus gewähren:

[/]
@allaccess = rw

Aber gewähren Sie unseren "Einigen" nur Lesezugriff auf ein untergeordnetes Projekt:

[/someproject]
@someaccess = r

Eine einfache Dokumentation finden Sie auch in den Dateien authz und passwd.

82
Stephen Bailey

@ Stephen Bailey

Um Ihre Antwort zu vervollständigen, können Sie die Benutzerrechte auch über eine Nur-Text-Datei in Ihrem Repository an den Projektmanager delegieren.

Dazu richten Sie Ihre SVN-Datenbank mit einer Standarddatei authz ein, die Folgendes enthält:

###########################################################################
# 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

Mit dieser Standarddatei authz können die SVN-Administratoren eine sichtbare Nur-Text-Datei in Ihrem SVN-Repository mit dem Namen '/ admin/acl_descriptions.txt' ändern, in der sich die SVN-Administratoren oder Projektmanager befinden ändert und registriert die Benutzer.

Dann richten Sie einen Pre-Commit-Hook ein, der erkennt, ob die Revision aus dieser Datei (und nur dieser Datei) besteht.

Wenn dies der Fall ist, überprüft das Skript dieses Hooks den Inhalt Ihrer Nur-Text-Datei und prüft, ob jede Zeile der SVN-Syntax entspricht.

Dann aktualisiert ein Post-Commit-Hook das \conf\authz Datei mit der Verkettung von:

  • die oben dargestellte TEMPLATE authz -Datei
  • die Klartextdatei /admin/acl_descriptions.txt

Die erste Iteration wird vom SVN-Administrator durchgeführt, der Folgendes hinzufügt:

[groups]
projadmins = zzzz

Er schreibt seine Änderung fest und das aktualisiert die authz -Datei.

Anschließend kann der Projektmanager 'zzzz' eine beliebige Benutzergruppe und einen beliebigen Benutzer hinzufügen, entfernen oder deklarieren. Er schreibt die Datei fest und die Datei authz wird aktualisiert.

Auf diese Weise muss der SVN-Administrator nicht alle Benutzer für alle SVN-Repositorys einzeln verwalten..

27
VonC

Eine Sache, die mich erwischt hat:

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

aber

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

Sie müssen keinen abschließenden Schrägstrich in das Verzeichnis einfügen, sonst wird 403 für die Anforderung OPTIONS angezeigt.

26
Chris Burgess

Sie können svn + ssh: verwenden, und dann basiert es auf der Zugriffssteuerung auf das Repository am angegebenen Speicherort.

So hoste ich ein Projektgruppen-Repository an meiner Uni, wo ich nichts anderes einrichten kann. Nur ein Verzeichnis zu haben, das der Gruppe gehört, und dort svn-admin (oder was auch immer) auszuführen, bedeutet, dass ich keine Konfiguration vornehmen musste.

8

Obwohl ich vorschlagen würde, dass der Apache-Ansatz besser ist, funktioniert SVN Serve einwandfrei und ist ziemlich unkompliziert.

Angenommen, Ihr Repository heißt "my_repo" und ist in C:\svn_repos gespeichert:

  1. Erstellen Sie eine Datei mit dem Namen "passwd" in "C:\svn_repos\my_repo\conf". Diese Datei sollte folgendermaßen aussehen:

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. In C:\svn_repos\my_repo\conf\svnserve.conf Folgendes festlegen:

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

Dadurch werden Benutzer gezwungen, sich anzumelden, um in dieses Repository zu lesen oder zu schreiben.

Befolgen Sie diese Schritte für jedes Repository, wobei Sie nur die entsprechenden Benutzer in die passwd -Datei für jedes Repository aufnehmen.

5
RB.

Der beste Weg ist, Apache einzurichten und den Zugriff darauf einzustellen. Überprüfen Sie das Svn-Buch für Hilfe. Wenn Sie Apache nicht verwenden möchten, können Sie mit svnserve auch eine minimalistische Zugriffskontrolle durchführen.

3