Apache-2.2

trac 忽略 svn 授權設置

  • July 21, 2010

我在 Windows 上使用 VirtualSVN + Trac-plugin 進行多項目。我在 VirtualSVN 中配置了使用者和組,這樣只有授權的使用者/組才能訪問指定的資源。

例如:

  1. Customer1 可以訪問 Repository1 和 Trac1
  2. Customer2 可以訪問 Repository2 和 Trac2
  3. Anonymous 無法訪問任何 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>

我試圖為 Trac 聲明AuthzSVNAccessFile “D:/repos/svn/authz”。但它並不能確定地工作。

誰能幫我糾正一下?提前致謝。

這個問題可以分為兩部分:

  1. 如 authz 文件所述,使用 trac 限制瀏覽 svn 源

你必須告訴 trac 授權文件在哪裡。

編輯 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 系統的權限。

使用基本身份驗證時,您有兩種選擇:

a) 如果您放棄使用 TracEnvParentDir 的一個配置並將其更改為兩個 Location 條目,則可以更改 Require 指令:

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

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

雖然如果你有更多的trac是不切實際的。

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 權限同步是另一個問題 :) 如果您要經常這樣做,最好編寫一些與您的環境完全匹配的自定義腳本來添加和刪除權限。

引用自:https://serverfault.com/questions/162450