svnserve配置檔案詳析

2021-08-29 14:52:15 字數 3511 閱讀 5182

svnserve是svn自帶的乙個輕型伺服器,客戶端通過使用以svn://或svn+ssh://為字首的url來訪問svnserve伺服器,實現遠端訪問svn版本庫。

svnserve可以通過配置檔案來設定使用者和口令,以及按路徑控制版本庫訪問許可權。本文詳細分析了svnserve配置檔案格式,並說明如何使用配置檔案控制版本庫訪問許可權。

本文介紹svn的版本為1.4.4。

1) svnserve配置檔案概述

svn服務配置檔案,該檔案版本庫目錄的conf目錄下,檔名為svnserve.conf。

使用者名稱口令檔案,該檔名在檔案svnserve.conf中指定,預設為同目錄下的passwd。

許可權配置檔案,該檔名也在檔案svnserve.conf中指定,預設為同目錄下的authz。

2) svn服務配置檔案

svn服務配置檔案為版本庫目錄中的檔案conf/svnserve.conf。該檔案僅由乙個[general]配置段組成。

[general]配置段中配置行格式如下:

《配置項》 = 《值》

配置項分為以下5項:

anon-access 控制非鑑權使用者訪問版本庫的許可權。取值範圍為"write"、"read"和"none"。

即"write"為可讀可寫,"read"為唯讀,"none"表示無訪問許可權。

預設值:read

auth-access 控制鑑權使用者訪問版本庫的許可權。取值範圍為"write"、"read"和"none"。

即"write"為可讀可寫,"read"為唯讀,"none"表示無訪問許可權。

預設值:write

password-db 指定使用者名稱口令檔名。除非指定絕對路徑,否則檔案位置為相對conf

目錄的相對路徑。

預設值:passwd

authz-db 指定許可權配置檔名,通過該檔案可以實現以路徑為基礎的訪問控制。

除非指定絕對路徑,否則檔案位置為相對conf目錄的相對路徑。

預設值:authz

realm 指定版本庫的認證域,即在登入時提示的認證網域名稱稱。若兩個版本庫的

認證域相同,建議使用相同的使用者名稱口令資料檔案。

預設值:乙個uuid(universal unique identifier,全域性唯一標示)。

【說明】版本庫認證域

在使用svn客戶端訪問svnserve伺服器時,若需要使用者登入,則提示資訊如下:

# svn list svn:

authentication realm: 0d545a49-4038-0410-99b4-c66dc73f754e

password for 'root':

在上述第2行"authentication realm: "之後顯示的字串為認證網域名稱稱。如果在配置檔案中為設定認證域,就會提示乙個uuid,如上述所示。

如果在配置檔案中指定了如下配置項:

realm = test

將在svn客戶端提示如下:

# svn list svn:

authentication realm: test

password for 'root':

例1:svn服務配置檔案conf/svnserve.conf的內容如下:

[general]

anon-access = none

auth-access = write

password-db = ../../conf/passwd

authz-db = ../../conf/authz

realm = test

上述配置檔案設定非鑑權使用者無許可權訪問該版本庫;鑑權使用者可對版本庫進行讀寫;使用者名稱口令檔案為相對版本庫conf目錄的檔案"../../conf/passwd";許可權配置檔案為相對版本庫conf目錄的檔案"../../conf/authz";版本庫的認證域為"test"。

3) 使用者名稱口令檔案

使用者名稱口令檔案由svnserve.conf的配置項password-db指定,預設為conf目錄中的passwd。該檔案僅由乙個[users]配置段組成。

[users]配置段的配置行格式如下:

《使用者名稱》 = 《口令》

注意:配置行中的口令為未經過任何處理的明文。

例2:使用者名稱口令檔案conf/passwd的內容如下:

[users]

admin = admin

thinker = 123456

該檔案中配置了兩個使用者,使用者名稱分別為"admin"和"thinker"。其中"admin"使用者的口令為"admin";"thinker"使用者的口令為"123456"。

4) 許可權配置檔案

許可權配置檔案由svnserve.conf的配置項authz-db指定,預設為conf目錄中的authz。該配置檔案由乙個[groups]配置段和若干個版本庫路徑許可權段組成。

[groups]配置段中配置行格式如下:

《使用者組》 = 《使用者列表》

使用者列表由若干個使用者組或使用者名稱構成,使用者組或使用者名稱之間用逗號","分隔,引用使用者組時要使用字首"@"(如:引用使用者組"all"要使用字串"@all")。

版本庫路徑許可權段的段名格式如下:

[《版本庫名》:《路徑》]

如版本庫abc路徑/tmp的版本庫路徑許可權段的段名為"[abc:/tmp]"。

可省略段名中的版本庫名。若省略版本庫名,則該版本庫路徑許可權段對所有版本庫中相同路徑的訪問控制都有效。如:段名為"[/tmp]"的版本庫路徑許可權段設定了所有引用該許可權配置檔案的版本庫中目錄"/tmp"的訪問許可權。

版本庫路徑許可權段中配置行格式有如下三種:

《使用者名稱》 = 《許可權》

《使用者組》 = 《許可權》

* = 《許可權》

其中,"*"表示任何使用者;許可權的取值範圍為''、'r'和'rw',''表示對該版本庫路徑無任何許可權,'r'表示具有唯讀許可權,'rw'表示有讀寫許可權。

注意:每行配置只能配置單個使用者或使用者組。

例3:許可權配置檔案conf/authz的內容如下:

[groups]

g_admin = admin,thinker

[admintools:/]

@g_admin = rw

* =[test:/home/thinker]

thinker = rw

* = r

在上述配置檔案中,定義了乙個使用者組"g_admin",該使用者組包含使用者"admin"和"thinker"。然後定義了2個版本庫路徑許可權段。其中,版本庫"admintools"只有使用者組"g_admin"可讀寫,其他使用者無任何許可權;版本庫"test"中路徑"/home/thinker"只有使用者"thinker"有讀寫許可權,其他使用者只有可讀許可權。

5) 總結

在本文中,詳細介紹了svnserve程式的3個配置檔案。svn管理員可以通過這3個配置檔案設定svnserve服務的使用者名稱口令,以及對版本庫路徑的訪問許可權。這些配置檔案儲存後就立即生效,不需要重啟svnserve服務。

需要強調的是本文介紹的配置檔案只對svnserve服務有效,即客戶端通過字首為svn://或svn+ssh://的url訪問版本庫有效,而對通過字首http://、https://或file:///的url無效。

xml mysql配置詳解 xml配置檔案詳解

1 bean的基本屬性配置 注意 在整合struts和hibernate框架時,需要將action的scope設為 prototype 可以配置全域性的自動裝配型別,在beans內,設定default autowire 2,團隊協作開發 import標籤 3 bean的繼承 parent屬性 如果c...

linux yum的配置檔案 repo檔案詳解

yum的工作原理並不複雜,每乙個 rpm軟體的頭 header 裡面都會紀錄該軟體的依賴關係,那麼如果可以將該頭的內容紀錄下來並且進行分析,可以知道每個軟體在安裝之前需要額外安裝 哪些基礎軟體。也就是說,在伺服器上面先以分析工具將所有的rpm檔案進行分析,然後將該分析紀錄下來,只要在進行安裝或公升級...

nginx配置檔案中的location詳解

location 語法 location uri 預設 否 上下文 server 這個指令隨url不同而接受不同的結構。你可以配置使用常規字串和正規表示式。如果使用正規表示式,你必須使用 字首選擇不區分大小寫的匹配或者 選擇區分大小寫的匹配。確定 哪個location 指令匹配乙個特定指令,常規字串...