Trac でユーザ定義の「権限」を追加する2011年4月に読んだ本

2011年04月17日

Trac でもっと細かい粒度のアクセス権設定をする

AuthzPolicy

Trac 系のコネタをもう一つ。デフォルトより細かい粒度のアクセス権設定をする。

もともとは「そもそもこの Trac は…」という内容を WikiStart のページに書いてしまったので、このトップ・ページはログインしていない人も含めて全員が見られるようにしておきたい。また、Wiki にかかれるいくつかの技術情報は広く見てもらいたいものなので、やっぱりログインしていない人でも見られるようにしておきたい。でも、いくつかのページはログイン権限を持っていない人には見せたくない。デフォルトの権限設定では、WIKI_VIEW 権限の有無しか設定できないので、こんな器用なことはできない。

幸い、Trac 0.11 からはこのようなアクセス権限の微妙な制御ができるような plugin を組み込み可能になっている。Trac Fine Grained Permissions が参考になるだろう。Trac 0.12 では Authz ライクなアクセス権限設定を可能にする AuthzPolicy がデフォルトで含まれている。0.12 では、trac.ini の [component] セクションで authzpolicy コンポーネントを有効化し、[trac] セクションの permission_policies に AuthPolicy を追加する。permission_policies は記載された順番に適用されるため、順番に意味がある(詳細はマニュアルを参照)。また、[authz_policy]セクション authz_file で、設定ファイルの場所を指定する。

[component]
tracopt.perm.authz_policy.authzpolicy = enabled

[trac]
# permission_policies = DefaultPermissionPolicy, LegacyAttachmentPolicy
permission_policies = AuthzPolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy

[authz_policy]
authz_file = /path_to_policy_file/authzpolicy.conf

WebAdmin からコンポーネントを有効化すると、[trac] セクションに空の authz_file を作ってくれるのだが、ここにファイルを設定してもダメ。一瞬ハマッた。ちゃんとマニュアル通りに [authz_policy] セクションに書くこと。

auth_policy ファイルの書き方は、上のマニュアル参照。Wiki だけでなく、Ticketや SVN についても、もっと細かいアクセス権限の設定が可能だ。僕が入れた定義はこんな感じ

# 名前が Private で終わるページは、ログインが必要
[wiki:*Private]
authenticated = WIKI_VIEW, WIKI_CREATE, WIKI_MODIFY, WIKI_RENAME
* =

# それ以外のページは、デフォルト通りの設定
[wiki:*]
authenticated = WIKI_CREATE, WIKI_MODIFY, WIKI_RENAME
* = WIKI_VIEW

やっぱり上から順番に見ていって適用される(適用できる定義が無かったときのみ、次の定義が読まれる)ので、このファイルも順番に意味がある。これも一瞬ハマった。



heitatta at 02:50│Comments(0)TrackBack(0) Programming 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Trac でユーザ定義の「権限」を追加する2011年4月に読んだ本