Forums: Help (Thread #33584)

プロジェクトのrootに権限をつけると全体についてしまう現象について (2013-02-22 21:57 by vivid_saturn #67457)

Trac Lighting 管理の初心者です。

Tracを管理していた前任者が辞め、管理者になったのですが、現在は以下の
ような事で躓いています(_ _;)
先輩方のお力をお借りできましたら幸いです。

管理メニュー→Subversion Access で表示される、
Manage Subversion Access Rights のページで、/ パスに、
Add Path Member to / でユーザー権限やグループ権限をつけると、全ての
プロジェクトの / に反映されてしまいます。
対象プロジェクトのrootの/に権限をつける方法を教えて頂けないでしょうか?

具体的には、複数登録済みのプロジェクトの全てではなく、そのうちの
いくつかのプロジェクトで、この現象が起こります。

起こるプロジェクトと、起こらないプロジェクトの/ パスのURLを比べると、
以下のようになっています。

■自身のプロジェクトの/に対してユーザー権限をつける事ができる場合
https://xxx/trac/プロジェクト名/admin/subversion/svnauthz/editpath/プロジェクト名:/

■/にユーザー権限をつけると、全てのプロジェクトに反映されてしまう場合
https://xxx/trac/プロジェクト名/admin/subversion/svnauthz/editpath/None:/
↑プロジェクト名は入っているのに、editpathの後がNoneになっている

上記の現象が起きているプロジェクトは、
Tracトップ→管理→プロジェクト作成
の手順で作成していますが、それ以外の事は特にしていません。

何か設定が足りないため、プロジェクトのroot が、全体のroot になって
しまうのでしょうか?
もしご存知の方がいらっしゃいましたら、どうかご教示下さいm(_ _)m

Tracのバージョンは、以下です。(古いのでしょうか…)
---------------------------------------
System Information
Trac: 0.11.5.ja1
Python: 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)]
setuptools: 0.6c9
SQLite: 3.6.13
pysqlite: 2.3.2
Genshi: 0.5
Pygments: 1.0
Subversion: 1.6.6 (r40053)
jQuery: 1.2.6
---------------------------------------

RE: プロジェクトのrootに権限をつけると全体についてしまう現象について (2013-02-22 22:30 by jun66j5 #67458)

それは Subversion アクセス制御の仕様です。
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html

たぶん誤解されているかと思うのですが、その画面は個々のプロジェクトごとにアクセスできますが、設定内容が反映されるファイルは {インストールディレクトリ}\projects\svnauthz にあり、個々のプロジェクト単位にこの svnauthz ファイルが1つずつあるのではなくて、すべてのプロジェクト/リポジトリで1つしかありません。

で、svnauthz ファイルの仕様として

[/]
foo = rw

などとリポジトリ名なしに設定すると、すべてのリポジトリに対して foo = rw の権限を与えるように指定したことになります。もちろん上記に加えて

[repos-name:/]
foo = r

などとすると repos-name リポジトリに対しては foo = r の権限を上書きできるようになっています。都合が悪い場合は、リポジトリ名を指定していない権限設定はすべて削除して、各々で一つずつ設定を行うようにすればよいかと思います。
Reply to #67457

RE: プロジェクトのrootに権限をつけると全体についてしまう現象について (2013-02-23 00:10 by vivid_saturn #67459)

Jun Omae 様

早速のご回答ありがとうございます!

実は、ご提示頂いた、svnauthz ファイルにも気がついたので、直接編集を
して確認みたのですが、Trac の画面上では変化が無かったので、ご質問
させて頂いた、という流れがありました。

具体的には…

仮に、以下のプロジェクトについて、設定をするとします。
ProjectA ←正しいと思われる動作をするプロジェクト
ProjectB ←何か設定が足りない思われる動作をするプロジェクト

また、以下のようなユーザーが存在するとします。
admin ←Trac全体、全てのプロジェクトに権限を持つユーザー
proAuser ←ProjectAのみに権限を持つユーザー
proBuser ←ProjectBのみに権限を持つユーザー

svnauthz ファイルを、以下のような感じで直に修正してみました。

[ProjectA:/]
proAuser = rw

[ProjectB:/]
proBuser = rw

[/]
admin = rw

この状態で、TracのTOP画面から、ProjectAを選択し、管理→Subversion Accessを
表示して、/ リンクをクリックすると、proAuser が表示されました。
正しい動きだと思っています。URLは以下のような感じです。
https://xxx/trac/ProjectA/admin/subversion/svnauthz/editpath/ProjectA:/

しかし、同じような手順でProjectBの / リンクを参照すると、admin が表示され
ました。(proBuserは表示されない)URLは以下のような感じです。
https://xxx/trac/ProjectB/admin/subversion/svnauthz/editpath/None:/

この状態で、実際にSubversionで確認してみると、
ちゃんと、ProjectAは、proAuser + admin からアクセスでき、
ProjectBは、proBuser + admin からアクセス出来る状態になっています。

ただし、画面上でProjectBにユーザーを追加すると、おかしくなってしまうのです。
※ここが今回ご質問させて頂いた部分です。

TracのTOP画面から、ProjectAを選択し、管理→Subversion Accessを
表示して、/ リンクをクリックし、proCuser を仮に追加したとします。
この場合は、ProjectAに、proAuser + admin + proCuser からアクセス
できるようになります。これは正しい動きだと思っています。

しかし、同じような手順でProjectBの / リンクにproCuserを参照すると、
本来なら、proCuserは、ProjectBのみにアクセスできるようにならない
といけないと思うのですが、ProjectAとProjectBにアクセスできるよう
になってしまっていました。

svnauthz ファイルを見ると、このようになっていました。

[/]
admin = rw
proCuer = rw

どうして、ProjectBの/リンクを開くと、以下のようなURLになってしまい、
https://xxx/trac/ProjectB/admin/subversion/svnauthz/editpath/None:/

一番上のrootにしか権限が設定できないようになるのか?というのが、
疑問点でした。

説明が拙く申し訳ありません。伝わりましたら幸いです。

このような現象についての解決策がありましたら、教えて頂けますと嬉しいです。

どうぞよろしくお願い致しますm(_ _)m
Reply to #67457

RE: プロジェクトのrootに権限をつけると全体についてしまう現象について (2013-02-25 12:02 by jun66j5 #67480)

詳細、ありがとうございます。

> しかし、同じような手順でProjectBの / リンクを参照すると、admin が表示され
> ました。(proBuserは表示されない)URLは以下のような感じです。
> https://xxx/trac/ProjectB/admin/subversion/svnauthz/editpath/None:/
この .../editpath/None:/ というリンクになるところまでは再現できました。

設定を確認していただきたいのですが、ProjectB の trac.ini にある [trac] authz_module_name が空になっていないでしょうか。ここが空になっているとそのようなリンクを生成するようです。
Reply to #67459

RE: プロジェクトのrootに権限をつけると全体についてしまう現象について (2013-02-23 00:13 by vivid_saturn #67460)

申し訳ありません。今投稿した文章に一部訂正があります。

---------------------------------------
しかし、同じような手順でProjectBの / リンクにproCuserを参照すると、
本来なら、proCuserは、ProjectBのみにアクセスできるようにならない
といけないと思うのですが、ProjectAとProjectBにアクセスできるよう
になってしまっていました。
---------------------------------------

“参照”すると、ではなく、“追加”すると、の誤りでした。

肝心なところを書き間違ってしまっていました。申し訳ありません。
Reply to #67457

RE: プロジェクトのrootに権限をつけると全体についてしまう現象について (2013-02-26 21:53 by vivid_saturn #67501)


Jun Omae (jun66j5)様

ご返信ありがとうございます!m(_ _)m

> 設定を確認していただきたいのですが、ProjectB の trac.ini にある [trac] authz_module_name が空になっていないでしょうか。ここが空になっているとそのようなリンクを生成するようです。

設定を確認してみたのですが、authz_module_name には、ProjectB の名称が入っていました。
(リンクが正しく表示されるProjectAと同じような感じでした。)

正しく表示されているProjectAと異なったのは、ProjectBのtrac.ini の記述内容が短いことです。
念のため貼り付けてみます。
---------------------------------------
# -*- coding: utf-8 -*-

[inherit]
file = D:\TracLight\python\share\trac\conf\trac.ini

[project]
name = ProjectB
url = https://192.168.xx.xx:xxx/trac/ProjectB

[ticket-workflow]
accept = new,assigned,accepted,reopened -> accepted
accept.name = 着手する
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY
leave = * -> *
leave.default = 1
leave.name = 変更しない
leave.operations = leave_status
reassign = new,assigned,accepted,reopened -> assigned
reassign.name = 担当者変更
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY
reopen = closed -> reopened
reopen.name = 差し戻す
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE
resolve = new,assigned,accepted,reopened -> closed
resolve.name = 解決にする
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY

[trac]
authz_module_name = ProjectB
repository_dir = d:\TracLight\projects/svn\ProjectB
---------------------------------------
trac.ini の全文です。

もしお気づきの事があるようでしたら、アドバイス頂けますと幸いです。

どうぞよろしくお願い致しますm(_ _)m
Reply to #67457

RE: プロジェクトのrootに権限をつけると全体についてしまう現象について (2013-02-26 22:57 by jun66j5 #67503)

この ProjectB はご自身で作成されたものでしょうか? 引き継がれる前から存在していたものでしょうか? この trac.ini を見る限り trac-admin initenv コマンドで直接作成したように見えます。

TracLightning ではプロジェクト作成は create-project.bat を用いることになっているので、もし使用されずに作成されたプロジェクトなのであれば、このバッチファイルで別に1つ作成したのとで、svnauthz や trac.ini あたりを比較してみてもらえないでしょうか? $TRACLIGHT_HOME/bin/create-project.bat にあると思います。
# initenv から作成しても大した弊害はないはずなんですが…

それでも改善されないようであれば、
1. svnauthzadminplugin を http://trac-hacks.org/svn/svnauthzadminplugin/0.11/ の最新で更新して改善が見られるか確認する
2. svnauthzadminplugin を使うことを諦めて svnauthz ファイルを直接編集する (自分だけが変更できるように共有フォルダを設定するなど…)
ぐらいでしょうか。
Reply to #67501

RE: プロジェクトのrootに権限をつけると全体についてしまう現象について (2013-02-26 23:40 by vivid_saturn #67504)

Jun Omae (jun66j5)様

ご回答ありがとうございます!

> この ProjectB はご自身で作成されたものでしょうか? 引き継がれる前から存在していたものでしょうか?

こちらは、自分が担当になってから作成したものです。
TracLighting のトップページのメニューにある管理から、プロジェクト名を入力して作成をしました。

> TracLightning ではプロジェクト作成は create-project.bat を用いることになっているので、
> もし使用されずに作成されたプロジェクトなのであれば、このバッチファイルで別に1つ作成したのとで、
> svnauthz や trac.ini あたりを比較してみてもらえないでしょうか?

管理画面のプロジェクト作成が何と連動しているのか分からないのですが、
今回初めて、create-project.bat を直接起動して、プロジェクトを作成してみました。

trac.ini は以下のようになっていて、ProjectBとは全く違うものでした。
(すみません、ちょっと長いですが・・・)
---------------------------------------
# -*- coding: utf-8 -*-

[inherit]
file = d:\TracLight\python\share\trac\conf\trac.ini

[project]
name = NewTestSample

[ticket-workflow]
accept = new,assigned,accepted,reopened -> accepted
accept.name = 着手する
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY
leave = * -> *
leave.default = 1
leave.name = 変更しない
leave.operations = leave_status
reassign = new,assigned,accepted,reopened -> assigned
reassign.name = 担当者変更
reassign.operations = set_owner
reassign.permissions = TICKET_MODIFY
reopen = closed -> reopened
reopen.name = 差し戻す
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE
resolve = new,assigned,accepted,reopened -> closed
resolve.name = 解決にする
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY

[trac]
repository_dir = d:\TracLight\projects/svn/NewTestSample

authz_module_name = NewTestSample
# TracLightning個別設定ファイル

[mainnav]
tickets.href = /wiki/MyTickets

[components]
mastertickets.api.masterticketssystem = disabled
mastertickets.web_ui.masterticketsmodule = disabled
codereview.peerreviewmain.userbasemodule = disabled
mailarchive.mailarchive.searchprovider = disabled
mailarchive.mailarchive.timeline = disabled
mailarchive.wikisyntax.wikisyntaxmail = disabled
mailarchive.wikisyntax.wikisyntaxmessageid = disabled
mailarchive.wikisyntax.wikisyntaxml = disabled
mailarchive.mailarchive.mailarchivemodule = disabled
searchhyperestraier.searchhyperestraier.searchhyperestraiermodule = disabled
timingandestimationplugin.api.timetrackingsetupparticipant = disabled
timingandestimationplugin.query_webui.querywebuiaddon = disabled
timingandestimationplugin.tande_filters.reportsfilter = disabled
timingandestimationplugin.tande_filters.totalhoursfilter = disabled
timingandestimationplugin.ticket_daemon.timetrackingticketobserver = disabled
timingandestimationplugin.ticket_webui.ticketwebuiaddon = disabled
timingandestimationplugin.webui.timingestimationandbillingpage = disabled

[ticket-custom]
due_assign = text
due_assign.label = 開始予定日
due_assign.order = 1
due_close = text
due_close.label = 終了予定日
due_close.order = 2
complete = text
complete.label = 進捗率(%)
complete.order = 3

[decorator]
calendar_fields=due_assign,due_close
iconized_report=false

[privatewikis]
private_wikis = SECRET

#[searchhyperestraier]
#index_path = C:\TracLight\casket
#replace_left = C:\TracLight\rep
#url_left = /

[theme]
theme = Lightning

[header_logo]
alt = Your Project
height = -1
link = /trac/all
src=site/logo.png
width = -1
---------------------------------------

むしろ、前任者が作ったものとかなり近いようでした。

また、この、新しく作った、NewTestSampleプロジェクトを、管理画面上から参照し、
SubversionAccess で / の権限がどうなっているのかを確認した所、
初期状態では、/ パスは表示されていなかったので、Add Path で / を追加した所、
None: ではなく、NewTestSample: へのリンクが作成されました!

管理画面の、トップ→管理→プロジェクト作成、でサンプルを別に作ってみましたが、
やはりこれはProjectBと同じtrac.ini となり、/ パスも None:となりました。

つまり、管理画面上からプロジェクト作成をすると発生する現象のようです。
ここまで分かったのは、Jun Omae (jun66j5)様のお陰です。

既に作成してしまったプロジェクトの / パスの直し方はまだ謎のままなので、
引き続き、教えて頂いた、1.2.の方法も試してみたいと思います。

長らくお付き合い頂き、本当にありがとうございました(_ _)
今後ともどうぞよろしくお願いします!
Reply to #67503