trac 忽略 svn 授权设置

trac 忽略 svn 授权设置

我在 Windows 上使用 VirtualSVN + Trac-plugin 来处理多个项目。我在 VirtualSVN 中配置了用户和组,这样只有授权的用户/组才能访问指定的资源。

例如:

  1. 客户1可以访问存储库1和Trac1
  2. 客户2可以访问Repository2和Trac2
  3. 匿名者无法访问任何 svn 存储库。

在我的系统上,一旦 Customer2 登录,他就可以访问 Repository2、Trac2还有 Trac1。这并不像预期的那样。

svn 的 apache 配置部分

<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 的 apache 配置部分

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>

我试图声明AuthzSVNAccessFile“D:/repos/svn/authz”对于 Trac 来说。但它并不能完全发挥作用。

有人能帮我纠正这个问题吗?提前谢谢了。

答案1

这个问题可以拆分成两个部分:

1)限制使用 trac 浏览 svn 源,如 authz 文件所述

您必须告诉 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)限制谁可以访问哪些路径。

它与 authz 文件无关,因为 trac 没有使用它来授予 trac 系统权限。

使用基本身份验证时,您有两个选择:

a) 如果您放弃使用 TracEnvParentDir 的一个配置并将其更改为两个 Location 条目,那么您可以更改 Require 指令:

<Location /trac/trac1>
    [...]
    Require user Customer1
</Location>

<Location /trac/trac2>
    [...]
    Require user Customer2
</Location>

尽管如果你有更多的跟踪,它是不切实际的。

b) 在 trac 中设置适当的权限。每个用户都可以“登录”所有 trac,但不能访问其中的任何内容。

删除用户的所有权限已认证并向适当的用户授予权限。例如:

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 权限同步是另一个问题:)如果您要经常这样做,最好编写一些与您的环境完全匹配的自定义脚本来添加和删除权限。

相关内容