svn 配置文件詳解

    svnserve是SVN自帶的一個輕型服務器,客戶端經過使用以svn://或svn+ssh://爲前綴的URL來訪問svnserve服務器,實現遠程訪問SVN版本庫。

    svnserve能夠經過配置文件來設置用戶和口令,以及按路徑控制版本庫訪問權限。本文詳細分析了svnserve配置文件格式,並說明如何使用配置文件控制版本庫訪問權限。

    本文介紹SVN的版本爲1.4.4。

1) svnserve配置文件概述

    svnserve配置文件一般由如下3個文本文件組成:
    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服務器時,若須要用戶登陸,則提示信息以下:
        [root@test root]# svn list svn://192.168.3.45/test
        Authentication realm: <svn://192.168.3.45:3690> 0d545a49-4038-0410-99b4-c66dc73f754e
        Password for 'root':
    在上述第2行"Authentication realm: <svn://192.168.3.45:3690>"以後顯示的字符串爲認證域名稱。若是在配置文件中爲設定認證域,就會提示一個UUID,如上述所示。
    若是在配置文件中指定了以下配置項:
        realm = test
    將在svn客戶端提示以下:
        [root@test root]# svn list svn://192.168.3.45/test
        Authentication realm: <svn://192.168.3.45:3690> 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無效。服務器

相關文章
相關標籤/搜索