透過 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 給包括進來。

參考資料

System Message: WARNING/2 (<string>, line 50)

Title underline too short.

參考資料
======
  • Version Control with Subversion 」 文件中第 6 章內的 「 Per-Directory Access Control 」 段落。
Posted by yungyuc at 17:28, 0 comment, 0 trackback.
Navigate
Add a trackback
Add a comment

Your name. (required)

Your personal website. (optional)

Your email address. Will not show in page. (suggested, but optional)

Text format is "Plain Text".

Enter "Lvcet"
© hover year to navigate month: powered by django