Comment configurer le contrôle d’access dans SVN?

J’ai mis en place un référentiel à l’aide de SVN et de projets téléchargés. Plusieurs utilisateurs travaillent sur ces projets. Mais tout le monde ne travaille pas sur tous les projets et nécessite un access. Je veux configurer des permissions pour chacun des projets avec les utilisateurs.

Comment puis-je y arriver?

Dans votre dossier svn \ repos \ YourRepo \ conf , vous trouverez deux fichiers, authz et passwd . Ce sont les deux que vous devez ajuster.

Dans le fichier passwd , vous devez append des noms d’utilisateur et des mots de passe. Je suppose que vous l’avez déjà fait puisque des personnes l’utilisent:

[users] User1=password1 User2=password2 

Vous souhaitez ensuite atsortingbuer des permissions en conséquence au fichier authz :

Créez les groupes conceptuels souhaités et ajoutez-y des personnes:

 [groups] allaccess = user1 someaccess = user2 

Choisissez ensuite quel access ils ont à la fois au niveau des permissions et au niveau du projet.

Donnons donc à nos “all access” tous les access depuis la racine:

 [/] @allaccess = rw 

Mais ne donnez à nos “quelques access” qu’un access en lecture seule à un projet de niveau inférieur:

 [/someproject] @someaccess = r 

Vous trouverez également une documentation simple dans les fichiers authz et passwd .

@Stephen Bailey

Pour compléter votre réponse, vous pouvez également déléguer les droits d’utilisateur au chef de projet, via un fichier texte brut dans votre référentiel.

Pour ce faire, vous configurez votre firebase database SVN avec un fichier d’ authz par défaut contenant les éléments suivants.

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

Ce fichier d’ authz par défaut autorise les administrateurs SVN à modifier un fichier texte visible dans votre référentiel SVN, appelé ‘/admin/acl_descriptions.txt’ , dans lequel les administrateurs SVN ou les chefs de projet modifieront et enregistreront les utilisateurs.

Ensuite, vous installez un hook pré-validation qui détectera si la révision est composée de ce fichier (et uniquement de ce fichier).

Si tel est le cas, ce script de crochet validera le contenu de votre fichier texte brut et vérifiera si chaque ligne est conforme à la syntaxe correcte SVN.

Ensuite, un hook post-commit mettra à jour le fichier \conf\authz avec la concaténation de:

  • le fichier authz TEMPLATE présenté ci-dessus
  • le fichier texte brut /admin/acl_descriptions.txt

La première itération est faite par l’administrateur SVN, ajoute-t-il:

 [groups] projadmins = zzzz 

Il valide sa modification et met à jour le fichier authz .

Ensuite, le chef de projet «zzzz» peut append, supprimer ou déclarer tout groupe d’utilisateurs et tous les utilisateurs qu’il souhaite. Il authz le fichier et le fichier authz est mis à jour.

De cette façon, l’administrateur SVN n’a pas à suivre tous les utilisateurs pour tous les référentiels SVN .

Un piège qui m’a surpris:

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

mais

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

Vous ne devez pas inclure de barre oblique sur le répertoire ou 403 pour la requête OPTIONS.

Vous pouvez utiliser svn + ssh: et ensuite, il est basé sur le contrôle d’access au référentiel à l’emplacement indiqué.

C’est ainsi que je héberge un référentiel de groupes de projets sur mon Uni, où je ne peux rien configurer d’autre. Le simple fait d’avoir un répertoire appartenant au groupe et d’exécuter svn-admin (ou peu importe ce que c’était) signifie que je n’ai pas eu besoin de faire de configuration.

Bien que je pense que l’approche Apache est meilleure, SVN Serve fonctionne bien et est assez simple.

En supposant que votre référentiel s’appelle “my_repo”, et qu’il soit stocké dans c: \ svn_repos:

  1. Créez un fichier appelé “passwd” dans “C: \ svn_repos \ my_repo \ conf”. Ce fichier devrait ressembler à:

     [Users] username = password john = johns_password steve = steves_password 
  2. Dans c: \ svn_repos \ my_repo \ conf \ svnserve.conf

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

Cela forcera les utilisateurs à se connecter pour lire ou écrire sur ce référentiel.

Suivez ces étapes pour chaque référentiel, en incluant uniquement les utilisateurs appropriés dans le fichier passwd pour chaque référentiel.

Le meilleur moyen est de configurer Apache et de définir l’access via celui-ci. Consultez le livre svn pour obtenir de l’aide. Si vous ne souhaitez pas utiliser Apache, vous pouvez également effectuer un contrôle d’access minimaliste à l’aide de svnserve.