ACL Extension(ACL拡張)

アクセス制御リストにより変更を制御してください。

/!\ NOTE: This extension does not enable a workflow similar to that granted by DAV SVN even if they look very similar. Mercurial can't do partial commits, nor can it limit the change list sent (which in effect means all changes across a repository must be sent in its entirety). Such limited functionality can be supplied by subrepositories.

1. ステータス

この拡張は Mercurial と共に配布されています。

著者: Vadim Gelfer

2. 概要

ACL拡張はリポジトリの部分に許可するリストや拒否するリストを利用した詳細なアクセス制御を可能にします。これらのリストはユーザに小さな書式パターンを紐つけます。 さらに、リストのコード(http, ssh, pull, push, bundle)に依存する変更を制限することができます。

セキュリティを強化するためにhg-ssh (Mercurial-sshアクセスのための制限されたシェル)と共にこの拡張が使用されることが勧められています。

3. 構成

下記は設定ファイル(hgrc)の例です。アクセス制御リストは「パターン = ユーザ書式」を使用します。パターンは小さなコード片です。

# tracpath ではこの機能は有効になっているため [hooks] の設定は必要ありません。

[hooks]

# コミット時にアクセス制限のチェックを行いたい場合は、これを使います
pretxncommit.acl = python:hgext.acl.hook

# pull, push, bundle, serve の際にアクセス制限のチェックを
# 行いたい場合は、これを使います
pretxnchangegroup.acl = python:hgext.acl.hook

[acl]
# 受信した変更のソースがこのリストにあるかどうかをチェックします。
# "serve" に対しては ssh または http、"push"、"pull"、"bundle" に対しては
# 対応する hg コマンドと解釈されます。
sources = serve

[acl.groups]
# ここでグループ名を定義せず、Mercurial を Unix 系のシステムで実行している
# 場合には、OS からユーザのリストを取り出します。そうでない場合には例外が
# 上がります。
designers = user1, user2

[acl.deny.branches]

# frozen-branch ブランチはすべてのユーザに対して拒否します
frozen-branch = *

# bad-user はすべてのブランチで拒否します
* = bad-user

[acl.allow.branches]

# branch-a には2~3ユーザを許可する:
branch-a = user-1, user-2, user-3

# branch-b には1ユーザのみ許可する:
branch-b = user-1

# super-user はすべてのブランチを許可する:
* = super-user

# branch-for-tests にはすべてのユーザを許可する:
branch-for-tests = *

[acl.deny]
# このリストが先にチェックされます。該当する場合 acl.allow はチェックされ
# ません。alc.deny がなければ、すべてのユーザに対してアクセスが許可されま
# す。2つの書き方があります: glob パターン = user, ..., @group, ...

# すべてのユーザに該当させるには、ユーザ部分にアスタリスクを使います:
# my/glob/pattern = *

# user6 はどのファイルに対しても書き込みアクセス権を持たないようになります:
** = user6

# グループ "hg-denied" はどのファイルに対しても書き込みアクセス権を持たな
# いようになります:
** = @hg-denied

# どのユーザも "DONT-TOUCH-THIS.txt" を変更できず、他のファイルは変更でき
# るようになります。以下を参照:
src/main/resources/DONT-TOUCH-THIS.txt = *

[acl.allow]
# acl.allow がない場合、デフォルトですべてのユーザが許可されます。
# 空の acl.allow = の場合、許可されるユーザはいないようになります。

# ユーザ "doc_writer" は "docs" フォルダ配下のすべてのファイルに対して書き
# 込みアクセス権を持つようになります:
docs/** = doc_writer

# ユーザ "jack" とグループ "designers" は "images" フォルダ配下のすべての
# ファイルに対して書き込みアクセス権を持つようになります:
images/** = jack, @designers

# すべてのユーザ ("user6" を除く、上記 acl.deny 参照) は、"resources" フォ
# ルダ配下のすべてのファイル (1ファイルを除く、acl.deny を参照) に対して書
# き込みアクセス権を持つようになります:
src/main/resources/** = *

.hgtags = release_engineer


CategoryBundledExtension

mercurial/AclExtension (last edited 2017-04-20 03:14:21 by omae)