= 粒度が細かいパーミッション = #Finegrainedpermissions Trac 0.11 より前は、リポジトリブラウザ サブシステムだけで「粒度が細かいパーミッション (fine grained permissions)」を定義することができました。 0.11 以降、カスタマイズしたパーミッションポリシーのプラグインを各所に使用するための共通のメカニズムが導入されたので、すべての種類の Trac リソースのあらゆるアクションについて、そのリソースの特定バージョンのレベルまで含めて許可/拒否を設定できるようになりました。 == パーミッションポリシー == #PermissionPolicies === !AuthzPolicy === #AuthzPolicy ポリシーの例として、 Authz 形式のシステムを基にしたポリシーが追加されました。詳しくは、 [http://trac.edgewall.org/browser/trunk/sample-plugins/permissions/authz_policy.py] を参照してください (現在のバージョンは Python 2.4 以降でないと動きません)。 (より多くの例が [http://trac.edgewall.org/browser/trunk/sample-plugins/permissions] にあります。) - [http://www.voidspace.org.uk/python/configobj.html ConfigObj] をインストール (必須) - authz_policy.py を plugins ディレクトリにコピーする - [http://swapoff.org/files/authzpolicy.conf authzpolicy.conf] ファイルをどこか (できれば、 Web サーバ起動ユーザ以外が読み取りできないセキュアな領域) に置く。 - `trac.ini` ファイルをアップデートする: {{{ [trac] ... permission_policies = AuthzPolicy, DefaultPermissionPolicy, LegacyAttachmentPolicy [authz_policy] authz_file = /some/trac/env/conf/authzpolicy.conf [components] ... authz_policy = enabled }}} パーミッションポリシーを指定する順序はとても重要です。 ポリシーは設定された順序で評価されます。 個々のポリシーはパーミッションチェックに対して `True`, `False`, `None` を返します。 戻り値が `None` の場合のみ ''次の'' パーミッションポリシーに問い合わせを行います。 どのポリシーも明示的にパーミッションを許可しない場合、最終的な結果は `False` になります (つまり、権限なしとみなされます)。 例えば、 `authz_file` が次の内容を含み: {{{ [wiki:WikiStart@*] * = WIKI_VIEW [wiki:PrivatePage@*] john = WIKI_VIEW * = }}} デフォルトパーミッションが次のような内容の場合: {{{ john WIKI_VIEW jack WIKI_VIEW # anonymous に WIKI_VIEW は付与されていない }}} パーミッションは以下の通りとなります: - WikiStart の全てのバージョンは、 (匿名ユーザも含む) 全員が閲覧できます。 - !PrivatePage は john が表示可能です。 - 他のページは john と jack が表示可能です。 === mod_authz_svn ライクなパーミッションポリシー === #mod_authz_svn-likepermissionpolicy この文書が書かれている時点では、 Trac 0.10 以前にリポジトリへの厳密なアクセス制御に使用されていた、古い「粒度が細かいパーミッション」システムは、まだパーミッションポリシーのコンポーネントにコンバートされていません。しかし、ユーザの視点では、実現できる機能に大きな違いはありません。 「粒度が細かいパーミッション」の制御に定義ファイルを必要とします。この定義ファイルは Subversion の mod_authz_svn で使用しているものを使います。 このファイルの形式と Subversion での用法に関する情報は [http://svnbook.red-bean.c