リポジトリへのアクセス制御について (フォーラムメッセージ #48525 からの引用)
現象を確認しました。バグ以外考えられませんが、取り急ぎ。
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
よろしくお願いいたします。
TraMを無効にして確認しました。
前述testアカウント(@everyoneグループ)において、参照できないフォルダは、フォルダ自体を含めて配下のファイル/フォルダはリポジトリブラウザ上に表示されない、目的の動作となっています。
現在Multiでは使用していないのでひとまず?これで大丈夫です。ありがとうございます。
(Multiで使用されている方は少々寂しいかと思いますが…)
ちなみにTortoiseSVNを併用していますが、TortoiseSVNはフォルダ自体はツリーに表示され、中身が「403」で見えない動作のようですね。
#寝ぼけていたのか誤字が多くすみませんでした…
TraMの方は、時間があるときに修正したいと思います。
また何かありましたら、遠慮なくご報告ください。 (対応は迅速とは限りませんが..)
原因がわかりました。リポジトリにアクセスするオブジェクトをTrac内部でキャッシュしているのですが、そのキャッシュに書き込まれているログインユーザがうまく反映されずに別のブラウザでログインしたユーザを利用してリポジトリを表示しようとしているため、アクセス権がないリポジトリがたまに表示されるという問題を引き起こしています。
リポジトリのタイプをsvnからキャッシュを利用しないdirect-svnfsを利用すれば正しく表示されるようになります。
python\share\trac\conf\trac.iniの下記の行を
repository_type = svn次のように変更することにより、direct-svnfsを利用できるようになります。
repository_type = direct-svnfs以上、よろしくお願いいたします。
こんにちは。確認が遅くなってすみません。
結論から言うと「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.~
の設定でも正しく動作しており、日本語フォルダ名でも制限が効いています。
以上、現状のご報告でした。
念のため確認させてください。 httpd.confではなく、trac.iniのtracセクションに記述しましたでしょうか?
端折って書いてすみません。
「PythonHandler」は「C:\TracLight\CollabNetSVN\httpd\conf\httpd.conf」の <Location "/trac"> 内を修正。
「repository_type」は「C:\TracLight\python\share\trac\conf\trac.ini」の trac 内を修正しています。
その後、サービス登録している「TracLightning」を再起動しての動作です。
プロジェクト固有のtrac.ini(projects\trac\XXX\conf\trac.ini)のrepository_typeはどうなっているでしょうか? もし、svnならdirect-svnfsに変更すると?
よろしくお願いします。
プロジェクト固有のtrac.ini内に「repository_type」の記述が見当たりません。(全文内)
tracセクションの記述は、
authz_file
authz_module_name
permission_policies
repository_dir
の4項目のみです。
ちなみにこれに「repository_type = direct_svnfs」を追加してTracLightningサービスを再起動しましたが、現象は変わらずでした。
PythonHandlerは「PythonHandler = Tram.~」のままとしています。
他に設定変更してみる箇所はありますでしょうか??
何度か検証したところ、こちらでも現象が直っていないことを確認しました。 引き続き原因を調査したいと思います。
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):
了解いたしました。 ひとまずはMultiで使用しませんので、CollabNetSVN\httpd\conf\httpd.confを
# PythonHandler tram.modpython_frontend PythonHandler trac.web.modpython_frontend
として運用してみる事にします。 ※これだと現象は出ないけど大丈夫なのかな???
また、本件の修正に関連するかもしれないので、日本語名パスを含めた Subversion Paths の件をチケットにあげておきます。 よろしくお願いします。
TracLightning2.5.0alpha4で対応しました。ご確認ください。
日本語のパスについてもレポートありがとうございます。こちらは少々お待ち下さい。
遅くなりました。 やっとこさ確認したのですが、前回と異なる環境での確認&ご報告です。
OS:Windows7 Professional TracLightning:2.5.0alpha4
結果ですが、やはりF5連打で見えたり見えなくなったりの挙動となります。
1.TracLightning2.5.0alpha4の新規インストール。
2.プロジェクトをcreate-projectにて「testsec」という名称で作成。
3.以下の階層(ディレクトリ)を作成
4.元々存在していたユーザ「admin」以外に「test」を作成
5.adminでログインし管理画面よりSubversionAccessでSubversionGroupsを以下に設定。
6.SubversionPathsを以下に設定
この状態で「test」でログインしリポジトリブラウザを見ると、F5連打で「folder1」および「folder2」が見えたり見えなかったりで、見えた際に掘り下げて進むと最終的にファイルの中身が見れてしまいます。
「repository_type」のみ「C:\TracLight\python\share\trac\conf\trac.ini」の trac 内を修正して、
repository_type = direct-svnfs
としています。
環境依存ですかね…
フォーラムに書き込んでしまいましたが、チケットで報告させていただきます。
svnauthzを用いたリポジトリ階層に対するアクセス権限付与でF5キー押下ですり抜けます。
フォーラム Help [#48525] からの引用
[forum: 48525]
TracLightning 2.4において、登録しているリポジトリに対してリポジトリブラウザでアクセスした際、権限エラーが表示された後のF5キー押下ですり抜ける動作となります。
<<premission>>
<<svnauthz>>
<<環境>>
このような権限設定において、「test」ユーザでログインし、上記「/top」から「/folder1」にアクセスすると以下の権限によるメッセージが表示されます。
「403 Forbidden (この操作をおこなうには /top/folder1 へのアクセスが拒否されました 権限が必要です)」
しかし、これが表示されたままF5キー(画面更新)を何度か押すと、/top/folder1 以下の階層内容が表示されます。次の階層に進んでも同様に403メッセージが表示されますが、その度にF5キーを何度か押下して進むことができ、最終的にファイルも表示できてしまいます。
例)/top/folder1/folder2/test.txtが開ける
どのような原因が考えられるでしょうか?