2009-12-12 4 views
1

Apache 서버에서 mysql 인증과 함께 mod_dav_svn을 사용하도록 사이트를 구성하려고합니다 (mod-dav-svn, mod-auth-sql, apache, mysql).Mysql과 Apache를 사용하는 Subversion Access Control

나는이

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 

: - :

-

사용자 A는 그룹의 구성원이 사용자 B가 그룹의 구성원이 가

나는 다음 내 httpd.conf 파일에 다음 사용

을 repo_ro입니다 repo_rw입니다
<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> 

이 구성에서는 사용자에게이 저장소의 유효한 사용자로 인증 된/var/svn/repo 저장소에 대한 액세스 권한을 부여 할 수 있습니다.

여러 개의 VirtualHost 항목을 추가하여 다양한 위치의 "repo"를 새로운 리포지토리 이름으로 바꾸고 개별 리포지토리에 대한 제어 된 rw 액세스를 제공 할 수 있습니다.

내 문제는 저장소에 대한 읽기 전용 액세스 및 익명 읽기 전용 액세스를 추가 할 수 없다는 것입니다.

가 나는 부분에

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

를 추가하는 것이 가능해야한다 읽고이 그러나 내가이 일을 할 수 없었던, 저장소에 대한 읽기 전용 액세스를 제공해야합니다. mysql 로그를 끝내면 repo_rw 만 쿼리 된 것으로 표시됩니다.

누구든지 조언을 할 수 있다면 매우 감사하게 생각합니다!

답변

0

이 방법은 제대로 작동하지 않는 것 같습니다. mahy 리소스 onb가 그물을 제안하지만, 아무도 현재 버전의 apache/mysql/modules에서 작동하지 않는 것 같습니다.

세분화 된 액세스 제어에는 1) 인증 파일 만, mysql 인증을 건너 뛰고 표준 아파치 인증 방법으로 유지, 또는 2) 사용자 액세스 권한을 정의하는 후크 스크립트를 madify하는 두 가지 옵션이 있습니다.

관련 문제