Platform: Windows Server 2008 R2
Apache 2.2.23 (win32)/SSL 1.0.0j upgrading to Apache 2.4.23 (win32)/SSL 1.0.2h
CollabNet Subversion Client SVNServe 1.7.8
Trac 1.0.9 (win32)
Python 2.7.1
Windowsサーバでは、SubversionとTracがApache 2.2.23、Subversion 1.7.8をTrac 1.0.9とmod_pythonモジュールでうまくやっていました。 Subversionアクセス制御ファイルで定義されたアクセス制御グループに基づいて、Tracプロジェクトへのアクセスが許可されました。 httpd.confファイル内のAuthzSVNAccessFile変数の設定は、サブバージョンアクセス制御ファイルe:/etc/.svnaccessを指しています。ユーザーがSubversionリポジトリにアクセスした場合、関連するTracプロジェクトにアクセスできます。それ以外の場合、アクセスは拒否されました。Apacheのアップグレード後にTracがSVNアクセス制御のパーミッションに従わない
httpd.confファイルには、以下が含まれていました。
<Location /trac>
SVNParentPath e:/svn_repository
AuthzSVNAccessFile "E:/etc/.svnaccess"
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir e:\trac
PythonOption TracUriRoot /trac
AuthType SSPI
SSPIAuth On
SSPIOfferSSPI Off
SSPIAuthoritative On
SSPIDomain <domaincontroller>
SSPIOmitDomain Off
SSPIUsernameCase lower
SSPIPerRequestAuth On
SSPIOfferBasic On
AuthName "UTAS TRAC Login (Use domain\userid format)"
Require valid-user
</Location>
私はその後、2.4.23に1.0.2hをApacheの/ SSLをアップグレードする必要がありました。このアップグレードでは、mod_pythonは廃止されましたので、mod_wsgiロードモジュールを使用するように切り替える必要がありました。私はmod_wsgi.soロードモジュールに追加し、設定ファイルを修正してPython関連の設定(AuthzSVNAccessFile設定を保持)を削除し、mod_wsgi情報を追加しました。 httpd.confファイル、Apacheは、アップグレード後
が含まれる:
<Location /trac>
SVNParentPath e:/svn_repository
AuthzSVNAccessFile "E:/etc/.svnaccess"
AuthType SSPI
SSPIAuth On
SSPIOfferSSPI Off
SSPIAuthoritative On
SSPIDomain <domaincontroller>
SSPIOmitDomain Off
SSPIUsernameCase lower
SSPIPerRequestAuth On
SSPIOfferBasic On
AuthName "UTAS TRAC Login (Use domain\userid format)"
Require valid-user
</Location>
WSGIScriptAlias /trac e:/trac/trac.wsgi
<Directory "e:/trac">
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
E:/trac/trac.wsgiはそれで次のようにあります。
import os
import trac.web.main
import site
site.addsitedir('e:\Python\Lib\site-packages')
os.environ['PYTHON_EGG_CACHE'] = r'c:\Trac-Python-Egg-Cache'
def application(environ, start_response):
environ['trac.env_parent_dir'] = r'e:\trac'
return trac.web.main.dispatch_request(environ, start_response)
なtrac.iniファイル(Beth_testプロジェクト用)には、Apacheアップグレード前と同じ重要なセクションがあります。
[components]
tracopt.versioncontrol.svn.* = enabled
tracstats.* = enabled
[repositories]
Beth_test.dir = e:\svn_repository\Beth_test
Beth_test.description = This is the ‘Beth_test’ project repository on the Test svn server.
Beth_test.type = svn
Beth_test.url = https://<my_server>/svn/Beth_test
Beth_test.hidden = true
tsvn = tsvn: Interact with TortoiseSvn
[trac]
authz_file = E:\etc\.svnaccess
permission_policies = AuthzSourcePolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy
permission_store = DefaultPermissionStore
repository_dir = e:\svn_repository\Beth_test
repository_type = svn
…plus a bunch of other settings
私のディレクターサーバー上のyの構造は次のとおりです。
E:\svn_repository\
Beth_test
SVN_test
E:\trac\
Beth_test
SVN_test
私は、Active Directoryの資格情報を入力した後TracのURLを持ち出すとき、私が記載されている2つのTracのプロジェクトを参照してください。しかし、プロジェクトをクリックすると、SubversionのBeth_testリポジトリに関連付けられているアクセス制御グループに自分のIDを追加していなくても、そのプロジェクトにアクセスできます。 TortoiseSVNでは適切にブロックされていますが、mod_wsgiモジュールを使用してTracを使用すると、誤ってTracプロジェクトにアクセスし、引き続きSubversionソースを参照できます。
ApacheまたはTracのログファイルには何も役立ちません。
Apacheをアップグレードしてmod_pythonからmod_wsgiに切り替えた後、TracがSubversionのアクセス制御のアクセス許可を守らない理由は何ですか?