2009-12-12 4 views
1

J'essaye de configurer un site sur mon serveur Apache pour utiliser mod_dav_svn avec l'authentification mysql.Contrôle d'accès Subversion en utilisant Mysql et Apache (mod-dav-svn, mod-auth-sql, apache, mysql)

J'utilise une base de données avec trois tableaux comme celui-ci

auth_users 
---------- 
uid username passwd 
1  UserA  pass 
2  UserB  pass 

.

auth_groups 
----------- 
gid group 
1  repo_rw 
2  repo_ro 

.

users_groups 
uid gid 
1  1 
2  2 

Par conséquent: -

UserA est membre du groupe repo_rw UtilisateurB est membre du groupe repo_ro

J'utilise ensuite ce qui suit dans mon fichier httpd.conf: -

<VirtualHost *:80> 
    DocumentRoot /var/www 
    ServerName repo.srv.domain.com 
    ServerPath /var/www 

    <Location /svn> 
    DAV svn 

    SVNPath /var/svn/repo 

    AuthType Basic 
    AuthName "Subversion Repository" 
    AuthUserFile /dev/null 
    AuthBasicAuthoritative Off 

    AuthMySQL_Authoritative on 
    AuthMySQL_Empty_Password off 
    AuthMySQL_Encryption_Types Plaintext 

    AuthMySQL_Password_Table "auth_users u" 
    AuthMySQL_Username_Field "u.username" 
    AuthMySQL_Password_Field "u.passwd" 

    AuthMySQL_Group_Table "auth_groups g RIGHT JOIN users_groups ug ON (ug.gid=g.gid) RIGHT JOIN auth_users u ON (ug.uid=u.uid)" 
    AuthMySQL_Group_Field "g.group" 

    <Limit GET PROPFIND OPTIONS REPORT> 
     Require group repo_rw 
    </Limit> 
    </Location> 
</VirtualHost> 

Dans cette configuration, je peux donner aux utilisateurs un accès rw au référentiel/var/svn/repo, authentifié en tant qu'utilisateurs valides de ce référentiel.

Je peux également ajouter plusieurs entrées VirtualHost, en remplaçant «repo» dans les différents emplacements par un nouveau nom de fichier et en fournissant un accès contrôlé à certains référentiels.

Mon problème est que je suis incapable d'ajouter l'accès LECTURE SEULE aux dépôts, ainsi que l'accès en lecture seule anonyme.

Je l'ai lu devrait être possible d'ajouter

<LimitExcept GET PROPFIND OPTIONS REPORT> 
    Require group repo_ro 
</Limit> 

à la section et cela devrait permettre un accès en lecture seule au dépôt, mais je ne l'ai pas été en mesure de faire ce travail. Lorsque le journal mysql est affiché, seul le repo_rw est interrogé.

Si quelqu'un peut donner des conseils, je serais extrêmement reconnaissant!

Répondre

0

Il semble que cette méthode ne fonctionne tout simplement pas. Il y a des ressources mahy sur le net suggérant que ce sera le cas, mais aucune ne semble fonctionner avec les versions actuelles d'apache/mysql/modules.

Il existe deux options pour le contrôle d'accès granulaire: 1) uniquement les fichiers auth, ignorer l'authentification mysql et conserver les méthodes d'authentification apache standard, ou 2) activer les scripts hook pour définir l'accès des utilisateurs.

Questions connexes