我在Windows上使用VirtualSVN + Trac-plugin进行多项目。 我已经在VirtualSVN中configuration了用户和组,这样只有授权的用户/组才能访问指定的资源。
例如:
在我的系统上,一旦Customer2login,他可以访问Repository2,Trac2, 但也可以访问Trac1 。 这不是预期的。
svn的apacheconfiguration部分
<Location /svn> DAV svn SVNListParentPath off SVNParentPath "D:/repos/svn" SVNPathAuthz on AuthName "Subversion Repositories" AuthType Basic AuthBasicProvider file AuthUserFile "D:/repos/svn/htpasswd" AuthzSVNAccessFile "D:/repos/svn/authz" require valid-user </Location>
Trac的apacheconfiguration部分
LoadModule python_module "trac/python/mod_python_so.pyd" LoadModule authz_user_module "bin/mod_authz_user.so" <Location /trac> SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir "d:/repos/trac" PythonOption TracUriRoot /trac AuthName "Trac" AuthType Basic AuthBasicProvider file AuthUserFile "d:/repos/svn/htpasswd" Require valid-user </Location>
我试图为Trac声明AuthzSVNAccessFile“D:/ repos / svn / authz” 。 但它不能确定地工作。
任何人都可以帮助我做出正确的? 提前致谢。
这个问题可以分为两部分:
1)通过authz文件来限制使用trac浏览svn源文件
你必须告诉trac authz文件的位置。
在d:/repos/trac/tracX/trac.ini中编辑trac.ini文件:
[trac] authz_file = D:/repos/svn/authz authz_module_name = name_of_the_module_as_in_authz_file_for_this_trac
2)限制谁可以访问哪个trac。
它与authz文件无关,因为trac没有使用它来授权trac系统。
使用基本身份validation时,您有两个选项:
a)如果用TracEnvParentDir放弃一个configuration并将其更改为两个Location条目,则可以更改Require指令:
<Location /trac/trac1> [...] Require user Customer1 </Location> <Location /trac/trac2> [...] Require user Customer2 </Location>
尽pipe如果你有更多的trac是不切实际的。
b)在trac的内部设置适当的权限。 每个用户将能够“login”到所有trac,但不能访问任何东西。
删除通过身份validation的用户的所有权限,并将权限授予适当的用户。 就像是:
trac-admin d:/repos/trac/trac1 permission remove authenticated * trac-admin d:/repos/trac/trac2 permission remove authenticated * trac-admin d:/repos/trac/trac1 permission add Customer1 TICKET_CREATE TICKET_MODIFY WIKI_CREATE WIKI_MODIFY trac-admin d:/repos/trac/trac2 permission add Customer2 TICKET_CREATE TICKET_MODIFY WIKI_CREATE WIKI_MODIFY
保持同步authz和trac权限是一个完整的其他问题:)如果你要做很多事情,最好写一些与你的环境完全匹配的自定义脚本来添加和删除权限。