11
votes

Comment faire de la subversion Utiliser des comptes système Linux pour l'authentification?

J'ai configuré un serveur Ubuntu pour subversion avec une interface Apache / WebDAV pour partager des référentiels avec d'autres développeurs. Ma question est que comment puis-je faire utiliser Subversion The Linux System Comptes d'authentification? Cela conduirait à une gestion de compte Subversion très facile. Subversion avec Apache / WebDav travaille actuellement avec cette configuration:

Contenu de /etc/apache2/mods-AVAILABLE/DAV_SVN.CONF:

<Location /svn>
  DAV svn
  SVNParentPath /home/svn
  SVNListParentPath On
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
</Location>

a essayé de changer authuserfile /etc/apache2/dav_svn.passwd code> avec authtuserfile / etc / shadow code> sans succès. Cela rend le serveur à répondre avec une erreur d'erreur 500 Internal Server. Il est logique, pourquoi le service Web doit avoir accès au fichier d'authentification système? P>

Merci beaucoup à l'avance! P> P>


2 commentaires

Voir aussi Stackoverflow.com/cevestions / 807477 / ...


@JW: Merci! Cela n'a pas la réponse, mais cela pointe sur un bon lien qui pointe la direction. Dans ma propre réponse, je pense que je l'ai fait plus simple. Merci.


3 Réponses :


1
votes

ne pouvez-vous pas utiliser SSH pour accéder aux référentiels Subversion au lieu de webdav?

svn checkout svn+ssh://user@server:/home/svn/repository/trunk


3 commentaires

Merci pour votre réponse. J'ai configuré svn dans la saveur WebDAV, principalement parce que c'est la seule méthode que je connaisse et puisse configurer, mais aussi parce que c'est la méthode recommandée que j'ai lu. J'aime comment ça marche sur webdav et je ne sais vraiment pas comment il se produit sur svn + ssh. J'ai actuellement trouvé la réponse et l'avez posté. J'accepte toujours les suggestions et les commentaires. Merci!


Il n'y a pas grand chose à configurer. Ajoutez des utilisateurs à SVN Group. Si les utilisateurs ont un accès SSH au serveur, ils ont également accès à des référentiels. Cela fonctionne mieux si l'authentification de clé publique / privée a été configurée (aucun mot de passe saisissant sur chaque commit).


Cela fonctionne bien pour Linux, mais SVN + SSH est une douleur pour les développeurs de Windows.



21
votes

Ok! Je l'ai fait! Et je pensais que ce serait très difficile de trouver la réponse!

Nous devons dire à Apache d'utiliser un « fournisseur d'authentification externe », Apache ne sera pas vérifier pour l'authentification, mais déléguer la tâche à un authentificateur externe, ce cas, le merveilleux pwauth . p>

Ainsi, les étapes que j'ai à rendre le travail était: p>

  1. Installer le module Mod_Auth_External pour Apache2 et pwauth p>

    ...
    AuthType Basic
    AuthName "Subversion Repository"
    AuthBasicProvider external
    AuthExternal pwauth
    Require valid-user
    ...
    
  2. Activé le nouveau module pour Apache:. sudo a2enmod authnz_external code> dans le terminal p> li>

  3. Configuré mon apache.conf code> (ou vous pouvez avoir httpd.conf code>) pour ajouter le authentificateur externe (basé sur cet article ): p>

    AddExternalAuth pwauth /usr/local/libexec/pwauth
    SetExternalAuthMethod pwauth pipe
    
  4. Edité mon /etc/apache2/httpd.conf code> pour définir le nouveau fournisseur de auth externe: p>

    sudo apt-get install libapache2-mod-authnz-external pwauth
    
  5. Testé et a bien fonctionné! P> li> Ol> p>


1 commentaires

En un sur mes serveurs, il y avait un peu de problème, car «Pwauth» a été installé à un répertoire différent par défaut (/ USR / SBIN / Pwauth). Donc, soit modifier le point 3 indiqué ci-dessus avec le chemin approprié, ou - comme je l'ai fait dans mon cas - ajoutez simplement un 'LN -S / USR / SBIN / Pwauth / USR / local / libexec / pwauth' '. Après cela, tous ont travaillé comme un charme, merci!



0
votes

Je ne peux pas encore commenter, mais je voulais ajouter que dans Ubuntu 12.04, le trajet de pwauth a changé alors cela devrait maintenant être xxx

et cela peut Être bien placé dans un fichier séparé à l'intérieur etc / apache2 / conf. / conf. / code>


0 commentaires