Apache-2.2
trac 忽略 svn 授權設置
我在 Windows 上使用 VirtualSVN + Trac-plugin 進行多項目。我在 VirtualSVN 中配置了使用者和組,這樣只有授權的使用者/組才能訪問指定的資源。
例如:
- Customer1 可以訪問 Repository1 和 Trac1
- Customer2 可以訪問 Repository2 和 Trac2
- 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”。但它並不能確定地工作。
誰能幫我糾正一下?提前致謝。
這個問題可以分為兩部分:
- 如 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 權限同步是另一個問題 :) 如果您要經常這樣做,最好編寫一些與您的環境完全匹配的自定義腳本來添加和刪除權限。