Ticket #20637

リポジトリへのアクセス制御について (フォーラムメッセージ #48525 からの引用)

Open Date: 2010-02-12 19:05 Last Update: 2010-05-20 21:08

Reporter:
Owner:
Type:
Status:
Closed
MileStone:
Priority:
5 - Medium
Severity:
7
Resolution:
None
File:
None

Details

フォーラムに書き込んでしまいましたが、チケットで報告させていただきます。

svnauthzを用いたリポジトリ階層に対するアクセス権限付与でF5キー押下ですり抜けます。

フォーラム Help [#48525] からの引用

[forum: 48525]
TracLightning 2.4において、登録しているリポジトリに対してリポジトリブラウザでアクセスした際、権限エラーが表示された後のF5キー押下ですり抜ける動作となります。

<<premission>>

authenticated: BROWSER_VIEW, FILE_VIEW, WIKI_VIEW
test         : BROWSER_VIEW, FILE_VIEW, WIKI_VIEW
admin        : CODE_REVIEW_MGR, TRAC_ADMIN

<<svnauthz>>

[groups]
sys-admin = admin
everyone = test

[projectname:/]
@everyone = r
@sys-admin = rw

[projectname:/top/folder1]
@everyone =
@sys-admin = rw[

<<環境>>

OS:Windows Vista Bussiness SP1
構成:ローカルPC上にTracおよびSubversion導入、ローカルのブラウザよりhttp接続

このような権限設定において、「test」ユーザでログインし、上記「/top」から「/folder1」にアクセスすると以下の権限によるメッセージが表示されます。

「403 Forbidden (この操作をおこなうには /top/folder1 へのアクセスが拒否されました 権限が必要です)」

しかし、これが表示されたままF5キー(画面更新)を何度か押すと、/top/folder1 以下の階層内容が表示されます。次の階層に進んでも同様に403メッセージが表示されますが、その度にF5キーを何度か押下して進むことができ、最終的にファイルも表示できてしまいます。

例)/top/folder1/folder2/test.txtが開ける

どのような原因が考えられるでしょうか?

Ticket History (3/18 Histories)

2010-02-12 19:05 Updated by: yaboo
  • New Ticket "リポジトリへのアクセス制御について (フォーラムメッセージ #48525 からの引用)" created
2010-03-23 08:28 Updated by: okamototk
  • Owner Update from (None) to okamototk
  • Priority Update from 5 - Medium to 9 - Highest
Comment

現象を確認しました。バグ以外考えられませんが、取り急ぎ。

2010-03-23 21:55 Updated by: okamototk
Comment

TraMを無効にすると、問題が解決するようです。

CollabNetSVN\httpd\conf\httpd.conf の下記の行

  PythonHandler tram.modpython_frontend
#  PythonHandler trac.web.modpython_frontend

でtramを無効して、次のように通常のTracのフロントエンドを有効にするように変更してみて頂けますか?

#  PythonHandler tram.modpython_frontend
  PythonHandler trac.web.modpython_frontend

よろしくお願いいたします。

2010-03-24 09:59 Updated by: yaboo
Comment

TraMを無効にして確認しました。

前述testアカウント(@everyoneグループ)において、参照できないフォルダは、フォルダ自体を含めて配下のファイル/フォルダはリポジトリブラウザ上に表示されない、目的の動作となっています。

現在Multiでは使用していないのでひとまず?これで大丈夫です。ありがとうございます。
(Multiで使用されている方は少々寂しいかと思いますが…)

ちなみにTortoiseSVNを併用していますが、TortoiseSVNはフォルダ自体はツリーに表示され、中身が「403」で見えない動作のようですね。

#寝ぼけていたのか誤字が多くすみませんでした…

2010-03-24 12:34 Updated by: okamototk
  • Severity Update from 5 - Medium to 7
  • Priority Update from 9 - Highest to 5 - Medium
Comment

TraMの方は、時間があるときに修正したいと思います。

また何かありましたら、遠慮なくご報告ください。 (対応は迅速とは限りませんが..)

2010-03-28 21:55 Updated by: okamototk
Comment

原因がわかりました。リポジトリにアクセスするオブジェクトをTrac内部でキャッシュしているのですが、そのキャッシュに書き込まれているログインユーザがうまく反映されずに別のブラウザでログインしたユーザを利用してリポジトリを表示しようとしているため、アクセス権がないリポジトリがたまに表示されるという問題を引き起こしています。

リポジトリのタイプをsvnからキャッシュを利用しないdirect-svnfsを利用すれば正しく表示されるようになります。

python\share\trac\conf\trac.iniの下記の行を

repository_type = svn
次のように変更することにより、direct-svnfsを利用できるようになります。
repository_type = direct-svnfs
以上、よろしくお願いいたします。

2010-03-30 06:46 Updated by: okamototk
2010-04-01 18:35 Updated by: yaboo
Comment

こんにちは。確認が遅くなってすみません。

結論から言うと「repository_type」を「direct-svnfs」とすると、また現象が再発します。

【設定状態】

repository_type = direct-svnfs
PythonHandler = Tram.~

※「repository_type」を「direct-svnfs」とし、「PythonHandler」は「Tram.~」に戻しても良いのですよね?


この状態ですと、当初チケットに記載した状況と同じく、制限が効かない状態となります。
「PythonHandler」を「Trac.~」に戻せば、repository_type が「direct-svnfs」or「svn」のどちらでも制限が効き、目的の動作(制限されたフォルダは表示されない等)となります。

ちょっと私の設定がおかしいのかもしれません…
引き続き時間をみて確認します。

<<以下、別件かと思いますが、関連していると思いますので記載します。>>

この設定を確認している際に、フォルダ名に日本語(漢字)が含まれている階層に対してSubversionAccessで今回と同じ制限を設けたところ、制限が効かずにやはりファイルまで開けてしまうようです。

「repository_type」を「direct-svnfs」または「svn」
「PythonHandler」を「Tram.~」または「Trac.~」


これのどの組み合わせでも日本語が含まれるフォルダの階層では制限が効いていません。
#日本語フォルダ名はダメ…とか仕様上の制限はありましたっけ??

確認しているフォルダ名はそのままここに書けないので、別の漢字名のフォルダを作って後ほど確認してみたいと思います。
SubversionAccessでの設定がsvnouthzに反映されている事は確認しています。

ちなみにTortoiseSVNは、

repository_type = direct-svnfs
PythonHandler = Tram.~


の設定でも正しく動作しており、日本語フォルダ名でも制限が効いています。

以上、現状のご報告でした。

2010-04-01 21:20 Updated by: okamototk
Comment

念のため確認させてください。 httpd.confではなく、trac.iniのtracセクションに記述しましたでしょうか?

2010-04-02 13:03 Updated by: yaboo
Comment

端折って書いてすみません。

「PythonHandler」は「C:\TracLight\CollabNetSVN\httpd\conf\httpd.conf」の <Location "/trac"> 内を修正。

「repository_type」は「C:\TracLight\python\share\trac\conf\trac.ini」の trac 内を修正しています。

その後、サービス登録している「TracLightning」を再起動しての動作です。

2010-04-03 02:40 Updated by: okamototk
Comment

プロジェクト固有のtrac.ini(projects\trac\XXX\conf\trac.ini)のrepository_typeはどうなっているでしょうか? もし、svnならdirect-svnfsに変更すると?

よろしくお願いします。

2010-04-05 11:12 Updated by: None
Comment

プロジェクト固有のtrac.ini内に「repository_type」の記述が見当たりません。(全文内)
tracセクションの記述は、

 authz_file
 authz_module_name
 permission_policies
 repository_dir

の4項目のみです。
ちなみにこれに「repository_type = direct_svnfs」を追加してTracLightningサービスを再起動しましたが、現象は変わらずでした。
PythonHandlerは「PythonHandler = Tram.~」のままとしています。

他に設定変更してみる箇所はありますでしょうか??

2010-04-06 06:28 Updated by: okamototk
Comment

何度か検証したところ、こちらでも現象が直っていないことを確認しました。 引き続き原因を調査したいと思います。

2010-04-06 08:15 Updated by: okamototk
Comment

Trac本体の下記の部分にパッチを当て、キャッシュからリポジトリ情報を取得した際にユーザ認証情報を強制的に上書きすることにより解決できることが分かりました。次のバージョンで修正を行うので、しばらくお待ちください。

$ diff -u trac/versioncontrol/api.py.orig  trac/versioncontrol/api.py
--- trac/versioncontrol/api.py.orig     2010-04-06 08:12:33.500000000 +0900
+++ trac/versioncontrol/api.py  2010-04-06 08:12:47.578125000 +0900
@@ -150,6 +150,7 @@
             tid = threading._get_ident()
             if tid in self._cache:
                 repos = self._cache[tid]
+                repos.authz.auth_name = authname
             else:
                 rtype, rdir = self.repository_type, self.repository_dir
                 if not os.path.isabs(rdir):

2010-04-06 10:55 Updated by: yaboo
Comment

了解いたしました。 ひとまずはMultiで使用しませんので、CollabNetSVN\httpd\conf\httpd.confを

#  PythonHandler tram.modpython_frontend
  PythonHandler trac.web.modpython_frontend

として運用してみる事にします。 ※これだと現象は出ないけど大丈夫なのかな???

また、本件の修正に関連するかもしれないので、日本語名パスを含めた Subversion Paths の件をチケットにあげておきます。 よろしくお願いします。

2010-04-07 07:25 Updated by: okamototk
Comment

TracLightning2.5.0alpha4で対応しました。ご確認ください。

日本語のパスについてもレポートありがとうございます。こちらは少々お待ち下さい。

2010-04-19 16:19 Updated by: yaboo
  • Component Update from trac-lightning 2.4.0 to milestone 2.5.0alpha4
Comment

遅くなりました。 やっとこさ確認したのですが、前回と異なる環境での確認&ご報告です。

OS:Windows7 Professional
TracLightning:2.5.0alpha4

結果ですが、やはりF5連打で見えたり見えなくなったりの挙動となります。

1.TracLightning2.5.0alpha4の新規インストール。
2.プロジェクトをcreate-projectにて「testsec」という名称で作成。
3.以下の階層(ディレクトリ)を作成

top
|- folder1
|- folder2
|- folder3


4.元々存在していたユーザ「admin」以外に「test」を作成 5.adminでログインし管理画面よりSubversionAccessでSubversionGroupsを以下に設定。

everyone ← testを所属させる
sys-admin ← adminを所属させる


6.SubversionPathsを以下に設定

/top/folder1
@sys-admin なし
@everyone なし
/top/folder2
@sys-admin rw
@everyone なし
/top/folder3
@sys-admin rw
@everyone r


この状態で「test」でログインしリポジトリブラウザを見ると、F5連打で「folder1」および「folder2」が見えたり見えなかったりで、見えた際に掘り下げて進むと最終的にファイルの中身が見れてしまいます。

「repository_type」のみ「C:\TracLight\python\share\trac\conf\trac.ini」の trac 内を修正して、

repository_type = direct-svnfs

としています。
環境依存ですかね…

2010-05-20 21:08 Updated by: okamototk
  • Ticket Close date is changed to 2010-05-20 21:08
  • Status Update from Open to Closed

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login