J'ai plusieurs référentiels de subversion qui sont servis via Apache 2.2 et WebDAV. Ils sont tous situés dans un endroit central, et j'ai utilisé cet article debian-administration.org comme base (j'ai cependant abandonné l'utilisation de l'authentification de la base de données pour un simple fichier htpasswd).
Depuis lors, j'ai également commencé à utiliser WebSVN . Mon problème est que tous les utilisateurs du système ne devraient pas pouvoir accéder aux différents référentiels, et la configuration par défaut de WebSVN est d'autoriser quiconque peut s'authentifier.
Selon la documentation WebSVN, la meilleure solution consiste à utiliser le système d'accès au chemin de subversion, j'ai donc cherché à le créer à l'aide de la directive AuthzSVNAccessFile.
Cependant, lorsque je fais cela, je reçois des messages "403 interdits".
Mes fichiers ressemblent à ceci:
J'ai des paramètres de stratégie par défaut dans un fichier:
<Location /svn/>
DAV svn
SVNParentPath /var/lib/svn/repository
Order deny,allow
Deny from all
</Location>
Chaque référentiel obtient un fichier de stratégie comme ci-dessous:
<Location /svn/sysadmin/>
Include /var/lib/svn/conf/default_auth.conf
AuthName "Repository for sysadmin"
require user joebloggs jimsmith mickmurphy
</Location>
Le fichier default_auth.conf contient ceci:
SVNParentPath /var/lib/svn/repository
AuthType basic
AuthUserFile /var/lib/svn/conf/.dav_svn.passwd
AuthzSVNAccessFile /var/lib/svn/conf/svnaccess.conf
Je ne sais pas vraiment pourquoi j'ai besoin du deuxième SVNParentPath dans default_auth.conf, mais je viens d'ajouter cela aujourd'hui car je recevais des messages d'erreur suite à l'ajout de la directive AuthzSVNAccessFile.
Avec un fichier d'accès totalement permissif
[/]
joebloggs = rw
le système a bien fonctionné (et est resté essentiellement inchangé), mais dès que j'ai commencé à essayer d'ajouter tout type de restrictions telles que
[sysadmin:/]
joebloggs = rw
au lieu de cela, je reçois à nouveau les erreurs «Autorisation refusée». Les entrées du fichier journal sont les suivantes:
[Thu May 28 10:40:17 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET websvn:/
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET svn:/sysadmin
Que dois-je faire pour que cela fonctionne? Vous avez mal configuré Apache ou ma compréhension du fichier svnaccess.conf est-elle incorrecte?
Si je m'y trompe, je n'ai aucun attachement particulier à mon approche globale, alors n'hésitez pas à proposer également des alternatives.
MISE À JOUR (20090528-1600):
J'ai essayé d'implémenter cette réponse , mais je n'arrive toujours pas à le faire fonctionner correctement.
Je sais que la plupart de la configuration est correcte, comme je l'ai ajouté
[/]
joebloggs = rw
au début et «joebloggs» a alors tous les accès corrects.
Quand j'essaie de me rendre spécifique au référentiel, faire quelque chose comme
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
puis j'ai obtenu une autorisation refusée erreur pour mickmurphy (joebloggs fonctionne toujours), avec une erreur similaire à ce que j'avais déjà précédemment
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
De plus, j'ai oublié d'expliquer précédemment que tous mes référentiels sont en dessous
/var/lib/svn/repository
MISE À JOUR (20090529-1245):
Pas de chance pour que cela fonctionne, mais tous les signes semblent indiquer que le contrôle d'accès au chemin dans Subversion ne fonctionne pas correctement. Mon hypothèse est que je n'ai pas configuré apache ou svn pour reconnaître correctement ma structure de référentiel.
En effet, l'entrée «[/]» semble fonctionner parfaitement.
Il me vient également à l'esprit que c'est une question qui pourrait mieux appartenir à StackOverflow?
MISE À JOUR (20090603-1740):
En réponse à l'un des commentaires de cette question, ma configuration WebDAV pour subversion elle-même reçoit l'emplacement / svn / repos mais websvn est défini sur / websvn.
la source
Réponses:
Le problème est probablement lié au fractionnement de la configuration entre deux directives d'emplacement, mais je ne suis pas sûr.
Plutôt que de définir des autorisations à deux endroits (config apache et le fichier authz), définissez-les simplement dans le fichier authz. Ainsi:
httpd.conf
svn.authz
Vous auriez également besoin des utilisateurs appropriés dans le fichier htpasswd.
la source
Je ne sais pas si vous avez résolu ce problème ou non, mais c'est la procédure qui fonctionne pour moi.
Oubliez de jouer avec les directives apache, éditez plutôt le fichier config.php de WebSVN et incluez / décommentez la directive suivante:
$ config-> useAuthenticationFile ('/ chemin / vers / votre / authz / fichier');
la source
cela fonctionne pour moi.
user1 peut voir "/" et "/ project1" user3 ne peut voir que "/ project1"
[groupes]
groupa = utilisateur1, utilisateur2
groupb = user3, user4
[/]
@groupa = rw
[/projet 1]
@groupb = rw
la source
J'ai eu beaucoup de mal avec cela, et la seule configuration qui fonctionne pour moi est la suivante:
Par conséquent, groupe1 a un accès en lecture et en écriture à projet1 et groupe2 a un accès en lecture à projet2. Tout le monde n'a accès à aucun projet.
Je dois souligner que "project1" et "project2" sont des projets à l'intérieur du référentiel défini dans le fichier de configuration Apache
subversion.conf
comme.Mon problème actuel est qu'il n'est pas possible de répertorier les projets dans le référentiel
/svn/repos
(bien qu'ils soient correctement accessibles).SVNListParentPath
sur la directive, peu importe où vous le mettez, cela n'aide pas.Actuellement, my
/var/www/svn
n'est pas un référentiel, mais juste un répertoire dans un système de fichiers de serveurs./var/www/svn/repos
est un référentiel créé avecsvnadmin create
la source
Vous auriez dû lire la doc websvn et tout aurait été évident :)
la source