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 n'a pas besoin d'accéder à tous les projets. Je souhaite configurer les autorisations utilisateur pour chaque projet.
Comment puis-je atteindre cet objectif?
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 ajouter des noms d'utilisateur et mots de passe. Je suppose que vous avez déjà fait cela depuis que des personnes l'utilisent:
[users]
User1=password1
User2=password2
Ensuite, vous souhaitez attribuer des autorisations en conséquence avec le fichier authz:
Créez les groupes conceptuels que vous souhaitez et ajoutez-y des personnes:
[groups]
allaccess = user1
someaccess = user2
Choisissez ensuite quel accès ils ont à la fois au niveau des autorisations et du projet.
Donnons donc à tous nos gars "tout accès" tous les accès depuis la racine:
[/]
@allaccess = rw
Mais n'accordez à nos gars "certains accès" qu'un accès en lecture seule à un projet de niveau inférieur:
[/someproject]
@someaccess = r
Vous trouverez également de la 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 responsable de projet, via un fichier texte brut de votre référentiel.
Pour ce faire, vous configurez votre base de données SVN avec un fichier par défaut authz
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 authz
par défaut autorise les administrateurs SVN à modifier un fichier texte brut visible dans votre référentiel SVN, appelé '/ admin/acl_descriptions.txt', dans lequel les administrateurs ou les chefs de projet SVN modifiera et enregistrera les utilisateurs.
Ensuite, vous configurez un hook de 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, le script de ce hook validera le contenu de votre fichier texte et vérifiera si chaque ligne est conforme à la syntaxe SVN.
Ensuite, un hook post-commit mettra à jour le \conf\authz
fichier avec la concaténation de:
authz
présenté ci-dessus/admin/acl_descriptions.txt
La première itération est effectuée par l'administrateur SVN, qui ajoute:
[groups]
projadmins = zzzz
Il valide sa modification et met à jour le fichier authz
.
Ensuite, le chef de projet 'zzzz' peut ajouter, supprimer ou déclarer tout groupe d'utilisateurs et tous les utilisateurs de son choix. Il valide le fichier et le fichier authz
est mis à jour.
De cette manière, l'administrateur SVN n'a pas à gérer individuellement tous les utilisateurs pour tous les référentiels SVN.
Un truc qui m'a attrapé:
[repos:/path/to/dir/] # this won't work
mais
[repos:/path/to/dir] # this is right
Vous ne devez pas inclure de barre oblique finale dans le répertoire, sinon vous verrez 403 pour la demande OPTIONS.
Vous pouvez utiliser svn + ssh:, puis c'est basé sur le contrôle d'accès au référentiel à l'emplacement donné.
C’est ainsi que j’héberge un référentiel de groupe de projets à l’université, où je ne peux rien configurer d’autre. Le fait de posséder un répertoire appartenant au groupe et d'exécuter svn-admin (ou quoi que ce soit d'autre) signifie que je n'ai besoin d'aucune configuration.
Bien que je suggère que l’approche Apache soit 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:
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
Dans C:\svn_repos\my_repo\conf\svnserve.conf, définissez:
[general]
password-db = passwd
auth-access=read
auth-access=write
Cela obligera les utilisateurs à se connecter pour lire ou écrire dans ce référentiel.
Suivez ces étapes pour chaque référentiel, en n'incluant que les utilisateurs appropriés dans le fichier passwd
de chaque référentiel.
Le meilleur moyen est de configurer Apache et de définir l’accès par ce biais. Consultez le svn book pour obtenir de l'aide. Si vous ne souhaitez pas utiliser Apache, vous pouvez également effectuer un contrôle d'accès minimaliste à l'aide de svnserve.