<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-6  評(píng)論-38  文章-40  trackbacks-0

    在閱讀本文之前,請(qǐng)確定你已經(jīng)知道了Subversion基本的服務(wù)器管理,知道了svnserve或Apache的配置,清楚如何設(shè)置用戶和密碼。關(guān)于svnserve的配置可以看我們的《Subversion快速入門教程》和《用Apache 和Subversion 搭建安全的版本控制環(huán)境》,對(duì)于一些細(xì)節(jié)情參考《使用Subversion進(jìn)行版本控制》。

    作為一個(gè)配置管理員,需要管理用戶的權(quán)限,本文主要介紹了使用Subversion的授權(quán)文件“authz-db”,同時(shí)為了敘述的清晰,我首先澄清一些概念。

    1,認(rèn)證(Authentication)和授權(quán)(Authorization)

    這兩個(gè)術(shù)語(yǔ)經(jīng)常一起出現(xiàn)。其中認(rèn)證的意思就是鑒別用戶的身份,最常見的方式就是使用用戶名和密碼,授權(quán)就是判斷用戶是否具備某種操作的權(quán)限,在Subversion里提供了“authz-db”文件,實(shí)現(xiàn)了以路徑為基礎(chǔ)的授權(quán),也就是判斷用戶是否有操作對(duì)應(yīng)路徑的權(quán)限,在Subversion 1.3之后,svnserve和Apache一樣都可以使用“authz-db”文件。


    2. svnserve下的配置文件

    因?yàn)楸疚氖且詓vnserve為例的,所以先介紹一下版本庫(kù)目錄的結(jié)構(gòu):

    D:\SVNROOT\PROJECT1
    ├─conf
    ├─dav
    ├─db
    │? ├─revprops
    │? ├─revs
    │? └─transactions
    ├─hooks
    └─locks

    其中conf下面有三個(gè)文件:

    ??? authz
    ??? passwd
    ??? svnserve.conf

    其中的“svnserve.conf”是這個(gè)版本庫(kù)的配置文件,當(dāng)使用svnserve時(shí),這個(gè)配置文件決定了使用什么認(rèn)證和授權(quán)文件:

    ??? password-db = passwd
    ??? authz-db = authz

    上面的配置說(shuō)明使用“svnserve.conf”同目錄的passwd和authz,其中的password-db指定了用戶密碼文件,authz-db是我們的授權(quán)文件,也就是我們本文主要介紹的文件。

    注意:使用Apache作為服務(wù)器時(shí),根本就不會(huì)參考“svnserve.conf”文件的內(nèi)容,而是會(huì)參考Apache的配置。


    3,基于svnserve的版本庫(kù)文件布局

    使用svnserve時(shí),為了管理的方便,應(yīng)該使用相同的認(rèn)證和授權(quán)文件,所以應(yīng)該讓所有版本庫(kù)的配置文件svnserve.conf指向同一個(gè)password-db和authz-db文件。下面是一個(gè)多版本庫(kù)的目錄:
    D:\SVNROOT
    ├─project1
    │? ├─conf
    │? ├─dav
    │? ├─db
    │? │? ├─revprops
    │? │? ├─revs
    │? │? └─transactions
    │? ├─hooks
    │? └─locks
    └─project2
    ??? ├─conf
    ??? ├─dav
    ??? ├─db
    ??? │? ├─revprops
    ??? │? ├─revs
    ??? │? └─transactions
    ??? ├─hooks
    ??? └─locks
    ???
    D:\SVNROOT下有兩個(gè)目錄project1和project2,都已經(jīng)創(chuàng)建了版本庫(kù),所以我們修改每個(gè)conf目錄下的svnserve.conf,使之指向同一個(gè)password-db和authz-db文件。

    password-db = ..\..\passwd
    authz-db = ..\..\authz

    這樣,D:\SVNROOT\passwd和D:\SVNROOT\authz就控制了所有版本庫(kù)的svnserve訪問。另外在后面的操作中要關(guān)閉匿名訪問,應(yīng)該去掉“anon-access = none”前的“#”號(hào),保證只有認(rèn)證用戶可以訪問。

    注意:還有一點(diǎn)需要注意,那就是svnserve的“realm”的值,在上面的設(shè)置下,應(yīng)該保證所有的版本庫(kù)使用相同的realm值,這樣,對(duì)版本庫(kù)的密碼緩存可以在多個(gè)版本庫(kù)之間共享,更多細(xì)節(jié)見客戶端憑證緩存

    4,測(cè)試用戶和組說(shuō)明

    版本庫(kù)禁止任何匿名用戶的訪問,只對(duì)認(rèn)證用戶有效。

    root:配置管理管理員,對(duì)版本庫(kù)有完全的管理權(quán)限。

    p1_admin1:project1的管理員,對(duì)project1有完全權(quán)限。
    p1_d1:project1的開發(fā)者,對(duì)project1的trunk有完全的權(quán)限,但是對(duì)其中的/trunk/admin目錄沒有任何權(quán)限。
    p1_t1:project1的測(cè)試者,對(duì)project1的trunk有完全的讀權(quán)限,但是對(duì)其中的/trunk/admin目錄沒有任何權(quán)限。

    p2_admin1:project2的管理員,對(duì)project2有完全權(quán)限。
    p2_d1:project2的開發(fā)者,對(duì)project2的trunk有完全的權(quán)限,但是對(duì)其中的/trunk/admin目錄沒有任何權(quán)限。
    p2_t1:project2的測(cè)試者,對(duì)project2的trunk有完全的讀權(quán)限,但是對(duì)其中的/trunk/admin目錄沒有任何權(quán)限。


    對(duì)應(yīng)的組及組的用戶:
    p1_group_a:p1_admin1
    p1_group_d:p1_d1
    p1_group_t:p1_t1
    p2_group_a:p2_admin1
    p2_group_d:p2_d1
    p2_group_t:p2_t1


    5,修改D:\SVNROOT\passwd文件

    前面已經(jīng)說(shuō)過(guò)了,用戶和密碼文件應(yīng)該是在D:\SVNROOT\passwd,所以我們?yōu)槊恳晃挥脩粼O(shè)置權(quán)限,文件內(nèi)容如下:

    						[users]
    p1_admin1 = p1_admin1
    p1_d1 = p1_d1
    p1_t1 = p1_t1
             
    p2_admin1 = p2_admin1
    p2_d1 = p2_d1
    p2_t1 = p2_t1

    為了便于驗(yàn)證,所有密碼和用戶名一致,如果你使用的是其他認(rèn)證方式,這一步可能不同,但是用戶名應(yīng)該都是一樣的。

    6,配置授權(quán),修改D:\SVNROOT\authz

    [groups]
    # 定義組信息

    p1_group_a = p1_admin1
    p1_group_d = p1_d1
    p1_group_t = p1_t1

    p2_group_a = p2_admin1
    p2_group_d = p2_d1
    p2_group_t = p2_t1


    [/]
    # 指定所有的版本庫(kù)默認(rèn)只讀,root可讀寫
    * = r
    root = rw


    [project1:/]
    # 指定對(duì)版本庫(kù)project1根目錄的權(quán)限
    @p1_group_a = rw
    @p1_group_d = rw
    @p1_group_t = r

    [project1:/trunk/admin]
    # 指定對(duì)版本庫(kù)project1的/trunk/admin根目錄的權(quán)限,
    # p1_group_a讀寫,p1_group_d和p1_group_t沒有任何權(quán)限。
    @p1_group_a = rw
    @p1_group_d =
    @p1_group_t =

    [project2:/]
    # 指定對(duì)版本庫(kù)project2根目錄的權(quán)限
    @p2_group_a = rw
    @p2_group_d = rw
    @p2_group_t = r

    [project2:/trunk/admin]
    # 指定對(duì)版本庫(kù)project1的/trunk/admin根目錄的權(quán)限
    @p2_group_a = rw
    @p2_group_d =
    @p2_group_t =


    經(jīng)過(guò)以上設(shè)置以后,你會(huì)發(fā)現(xiàn)一些有趣的事情。當(dāng)使用用戶“p1_d1”,檢出project1的trunk時(shí),目錄是空的,好像admin目錄根本不存在一樣,當(dāng)使用p1_d1用戶瀏覽版本庫(kù)時(shí),能夠看到admin目錄,但是其中的內(nèi)容卻無(wú)法看到。

    關(guān)于中文目錄,也是沒有問題的,只是注意要把a(bǔ)uthz文件轉(zhuǎn)化為UTF-8格式,在我的WINXP的UltraEdit里顯示的文件格式為U8-DOS,具體的做法是用UltraEdit打開authz文件,然后選擇“文件->轉(zhuǎn)換->ASCII轉(zhuǎn)UTF-8”,然后保存。

    再?gòu)?fù)雜的情況也不過(guò)如此,在實(shí)際的工作中要首先規(guī)劃好權(quán)限,只賦給用戶最小的權(quán)限,保證以最小的配置實(shí)現(xiàn)最復(fù)雜的權(quán)限控制。

    posted on 2006-12-02 20:34 一手的小窩窩 閱讀(189) 評(píng)論(0)  編輯  收藏 所屬分類: OTHER
    主站蜘蛛池模板: 美女黄网站人色视频免费国产 | a级亚洲片精品久久久久久久| 99视频在线观看免费| 亚洲国产精品lv| 在线免费一区二区| 99久久免费国产精品热| 77777午夜亚洲| 亚洲欧洲自拍拍偷午夜色无码| 亚洲精品视频在线观看免费| 亚洲精品天堂成人片AV在线播放| 国产亚洲精品拍拍拍拍拍| 午夜性色一区二区三区免费不卡视频 | 亚洲国产av无码精品| 99精品视频在线观看免费专区| 亚洲乱理伦片在线观看中字 | 亚洲乱色伦图片区小说| 亚洲成色在线综合网站| 日韩成人在线免费视频| 午夜视频免费在线观看| 香港经典a毛片免费观看看| 久久久久亚洲av无码专区| 九月婷婷亚洲综合在线| 五月婷婷在线免费观看| 91av免费在线视频| 亚洲色大成WWW亚洲女子| 亚洲第一视频网站| 亚洲国产小视频精品久久久三级| 4hu四虎最新免费地址| 你好老叔电影观看免费| 国产精品亚洲专区无码牛牛| 亚洲国产美女视频| 亚洲国产精品无码一线岛国| 国产jizzjizz免费视频| 中字幕视频在线永久在线观看免费| 不卡视频免费在线观看| 精品久久久久久久久亚洲偷窥女厕| 亚洲精品视频专区| 亚洲国产a∨无码中文777| 亚洲精品无码专区2| 毛片免费观看的视频在线| 24小时日本韩国高清免费|