透過 svn 的 http-dav 支援,我們能對單一的 dav 目錄內的 repository 作授權設定。這些授權設定可以 repository 為單位,也可以再細分到 repository 內的任意子目錄;同時也能作巢狀的設定。
授權資訊檔
在 apache.conf 裡可以用以下的 directive 來指定 subversion 的授權資訊:
AuthzSVNAccessFile /path/to/access/file
所指定的 SVNAccessFile 要有以下的格式:
[reponame:/path/to/assign] username = r username2 = rw username3 =
其中 reponame 是要設定的 repository 名稱; /path/to/assign 是該 repository 中要設定的目錄名稱。 username, username2, username3 三行設定了這三個使用者對該目錄的權限,分別為 read-only, read-write 和不可存取。
SVNAccessFile 裡還可以指定使用者群組:
[groups] group-name = username, username2
之後就可以用 @group-name 來指定 repository 目錄的使用者存取權:
[reponame:/dir] @group-name = r
另外,在 SVNAccessFile 裡有一種特別的 repository 指定法,可指涉該 dav 目錄內的所有 repository:
[/] * = r
* = r 這個語法中的 * 則是用來指涉「所有使用者」。
讓 Anonymous 和 Authenticated 使用者並存
如果我們在 apache.conf 裡的:
Require valid-user
directive 之前,加上:
Satisfy Any
directive,即可指定讓 dav_svn 先嚐試用 Anonymous 來存取 repository,如果失敗的話再嚐試登入。
在這種允許 Anonymous 的組態下,要注意 SVNAccessFile 裡如果有用 * 來指涉所有使用者的話,也會把 Anonymous 給包括進來。
參考資料
- 「 Version Control with Subversion 」 文件中第 6 章內的 「 Per-Directory Access Control 」 段落。
- Previous: Starship Operators @2005/01/10
- Next: Plone ListingPages 1.0b2 安裝 @2005/01/11
Please send trackback to: http://blog.seety.org/everydaywork/2005/1/11/196/trackback/.