User Tools

Site Tools


hack:permissions_utilisateurs_par_projets_dans_subversion

Prérequis

Activer les modules apache2 nécessaires

   (su) a2enmod dav
   (su) a2enmod dav_svn
   (su) a2enmod ldap
   (su) a2enmod authnz_ldap
   (su) a2enmod authz_svn

Créer le répertoire des dépôts

mkdir -p /srv/svn/

Créer les utilisateurs

Nous allons créer un fichier “passwd” dans notre dossier svn dans lequel sera enregistré les utilisateurs ainsi que les mots de passes cryptés. Voici la marche à suivre :

Lors de l'ajout du premier utilisateur on utilise l'argument “c” pour “create”

  • Le “m” permet lui de crypter le mot de passe
  • “passwd” correspond à notre fichier et “utilisateur1”… le premier utilisateur

Le mot de passe vous est ensuite demandé ainsi qu'une vérification

htpasswd -mc /srv/svn/.passwdfile utilisateur1

Ajout les autres utilisateurs

htpasswd -m /srv/svn/.passwdfile utilisateur2
htpasswd -m /srv/svn/.passwdfile utilisateur3
htpasswd -m /srv/svn/.passwdfile utilisateur4
htpasswd -m /srv/svn/.passwdfile utilisateur5
...

Modifier les permissions du fichier :

chown subversion:www-data /srv/svn/.passwdfile
chmod 660 /srv/svn/.passwdfile

Nos utilisateurs sont désormais prêts ! On passe ensuite aux permissions !

Créer le fichier des permissions des utilisateurs

Le fichier contenant les permissions est commun à tous les dépôts. Voici le détail du fichier et des possibilités.

Les groupes permettant de regrouper les utilisateurs par “paquets”.

[groups]
 groupe1 = utilisateur1, utilisateur3
 # Syntaxe : nom_du_groupe = utilisateur, utilisateur
 #
 # Permissions de tous les dépôts
 [/]
 * =
 # La syntaxe "* =" permet d'interdire l'accès à tout le monde.
 # Je vous conseille de faire de même si vous ne souhaitez pas laisser
 # votre dépôt en libre accès.
 #
 # Mon premier projet
 [projet1:/]
 * = # On interdit à tout le monde pour commencer...
 utilisateur1 = r # utilisateur1 pourra consulter le dépôt
 utilisateur2 = rw # utilisateur2 pourra lire ET écrire
 # utilisateur3 ne pourra pas le consulter
 [projet1:/trunk/sources/]
 utilisateur3 = r
 # utilisateur 3 aura accès en lecture au dossier "/trunk/sources" de mon premier projet
 #
 # Mon second projet
 [projet2:/]
 * = # On interdit à tout le monde pour commencer...
 @groupe1 = r # Syntaxe permettant d'utiliser les groupes.
 # Mes utilisateurs 1 et 3 pourrons donc lire ce dépôt !
 # N'oubliez pas le "@" lorsque vous faites référence à un groupe !
 utilisateur2 = rw # Autorisations en lecture ET écriture pour l'utilisateur2<nowiki>

Enregistrez votre fichier nommé "authz" avec vos permissions à la racine de votre dépôt. (Dans "/home/svn/authz" dans mon exemple)

La encore il faut modifier les permissions du fichier :

 <nowiki># Utilisateur / Groupe
 chown subversion:www-data authz
 chmod 660 authz

La partie des autorisations est désormais complète, on va rapidement configuré les dépôts.

Configuration des projets

Les utilisateurs et permissions sont désormais gérés dans nos deux fichiers, on peux donc désactiver cette option au niveau de la configuration des projets.

Cette étape est à répéter pour tous vos projets !

Ouvrez le fichier “/etc/apache2/conf.d/subversion.conf” et vérifiez la valeurs des paramètres

vi /etc/apache2/conf.d/subversion.conf

Ou avec “nano” qui est plus facile d'utilisation :)

nano /etc/apache2/conf.d/subversion.conf

Pour chaque projet répéter le bloc suivant :

<Location /svn/bull>
   DAV svn
   SVNPath /srv/svn/bull
   # Limit write permission to list of valid users.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      # Require SSL connection for password protection.
      # SSLRequireSSL
      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /srv/svn/.passwdfile
      AuthzSVNAccessFile /srv/svn/authz
      Require valid-user
      SVNListParentPath On
   </LimitExcept>
 </Location>

Cette partie est terminée, il ne nous reste plus qu'a redémarrer apache

/etc/init.d/apache2 restart

hack/permissions_utilisateurs_par_projets_dans_subversion.txt · Last modified: 2019/02/13 13:10 by 127.0.0.1