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

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

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

    小石頭
    Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.
    posts - 91,comments - 22,trackbacks - 0

    1???背景假設(shè)

    廈門央瞬公司是一家電子元器件設(shè)備供應(yīng)商,其中有個ARM部門,專門負(fù)責(zé)ARM芯片的方案設(shè)計、銷售,并在北京、上海各設(shè)立了一個辦事處。對于工作日志,原先采用郵件方式發(fā)給經(jīng)理,但是這種方式有個缺點,那就是不具備連續(xù)性,要看以前的日志必須一封一封郵件去查看,很麻煩。于是就想到利用 Subversion, 讓員工在自己電腦上編輯日志,然后利用svn傳送回來,既方便員工自己編寫日志,又方便對日志的歸檔處理,而且提交日志的時候只需要執(zhí)行一下 svn update 即可,比發(fā)送郵件還要簡單的多。

    • svn服務(wù)器相關(guān)信息

      • 服務(wù)器地址: 192.168.0.1
      • 服務(wù)器OS: MS Windows 2000 Server Edition 中文版
      • 代碼庫本地目錄: D:\svn\arm
    • arm部門文檔的目錄結(jié)構(gòu)如下:

      arm                 部門名稱
      ├─diary           工作日志目錄
      │  ├─headquarters    總部工作日志目錄
      │  ├─beijing         北京辦日志目錄
      │  └─shanghai        上海辦日志目錄
      ├─ref             公司公共文件參考目錄
      └─temp            臨時文件目錄
      
    • 人員情況

      • morson,公司總經(jīng)理,其實他不必親自看任何東西,就連部門經(jīng)理們的每周總結(jié)都不一定看。但是為了表示對他的尊敬,以及滿足一下他的權(quán)力欲,還是給他開放了“閱讀所有文檔”的權(quán)限
      • michael,arm事業(yè)部的部門經(jīng)理,沒事的時候喜歡弄點兒新技術(shù),用svn來管理日志,就是他相處來的主意
      • scofield,北京辦人員,老員工,為人油滑難管
      • lincon,上海辦人員,老員工,大老實人一個
      • linda,總部協(xié)調(diào)員、秘書,文筆不錯,長得也不錯
      • rory,單片機技術(shù)員,技術(shù)支持
    • 訪問權(quán)限需求分析

      • 允許總經(jīng)理讀取所有文件
      • 除部門經(jīng)理外,所有其他人員,均只能看到本辦事處人員工作日志
      • 不允許匿名訪問
      • ref目錄只允許經(jīng)理和秘書寫,對其他人只讀
      • temp目錄人人都可以寫

    2???建立代碼庫

    在服務(wù)器 D:\svn 目錄下,建立 arm 代碼庫,命令如下:

    D:\svn>svnadmin create arm
    

    在客戶機 F:\temp 目錄下,建立好上述目錄結(jié)構(gòu)

    用命令 F:\temp>svnimportarmsvn://192.168.0.1/arm 導(dǎo)入結(jié)構(gòu)

    【注意點:關(guān)于導(dǎo)入時候的細(xì)微差別】

    3???編輯代碼庫基礎(chǔ)配置文件

    編輯代碼庫 arm\conf\svnserve.conf 文件,如下:

    [general]
    password-db = passwd.conf
    anon-access = none
    auth-access = write
    authz-db = authz.conf
    

    4???管理用戶帳號

    新建代碼庫 arm\conf\passwd.conf 文件,如下:

    [users]
    morson = ShowMeTheMoney
    michael = mysecretpassword
    scofield = hellolittilekiller
    lincon = asyouknows111
    rory = 8809117
    linda = IlikeWorldCup2006
    

    5???建立目錄訪問權(quán)限控制文件

    新建代碼庫 arm\conf\authz.conf 文件,內(nèi)容如下:

    [groups]
    g_vip = morson
    g_manager = michael
    g_beijing = scofield
    g_shanghai = lincon
    g_headquarters = rory, linda
    g_docs = linda
    [arm:/]
    @g_manager = rw
    * = r
    [arm:/diary/headquarters]
    @g_manager = rw
    @g_headquarters = rw
    @g_vip = r
    * =
    [arm:/diary/beijing]
    @g_manager = rw
    @g_beijing = rw
    @g_vip = r
    * =
    [arm:/diary/shanghai]
    @g_manager = rw
    @g_shanghai = rw
    @g_vip = r
    * =
    [arm:/ref]
    @g_manager = rw
    @g_docs = rw
    * = r
    [arm:/temp]
    * = rw
    

    6???測試

    在服務(wù)器上,打開一個 DOS Prompt 窗口,輸入如下指令:

    svn co svn://127.0.0.1/arm --no-auth-cache --username rory --password 8809117
    

    我們應(yīng)該得到如下目錄結(jié)構(gòu):

    arm
    ├─diary
    │  └─headquarters
    ├─ref
    └─temp
    

    然后修改ref目錄下任意文件并提交,服務(wù)器將會報錯“Access deni”

    深入

    本章將詳細(xì)介紹前一章所涉及的兩個配置文件, svnserve.conf 和 authz.conf,通過對配置逐行的描述,來闡明其中的一些細(xì)節(jié)含義。

    這里首先要注意一點,任何配置文件的有效配置行,都不允許存在前置空格,否則程序會無法識別。也就是說,如果你直接從本文的純文本格式中拷貝了相關(guān)的配置行過去,需要手動將前置的4個空格全部刪除。當(dāng)然了,如果你覺得一下子要刪除好多行的同樣數(shù)目的前置空格是一件苦差使,那么也許 UltraEdit 的“Column Mode”編輯模式,可以給你很大幫助呢。

    1???svnserve.conf

    arm\conf\svnserve.conf 文件,是 svnserve.exe 這個服務(wù)器進程的配置文件,我們逐行解釋如下。

    首先,我們告訴 svnserve.exe,用戶名與密碼放在 passwd.conf 文件下。當(dāng)然,你可以改成任意的有效文件名,比如默認(rèn)的就是 passwd:

    password-db = passwd.conf
    

    接下來這兩行的意思,是說只允許經(jīng)過驗證的用戶,方可訪問代碼庫。 那么哪些是“經(jīng)過驗證的”用戶呢?噢,當(dāng)然,就是前面說那些在 passwd.conf 文件里面持有用戶名密碼的家伙。這兩行的等號后面,目前只允許 read write none 三種值,你如果想實現(xiàn)一些特殊的值,比如說“read-once”之類的,建議你自己動手改源代碼,反正它也是自由軟件:

    anon-access = none
    auth-access = write
    

    接下來就是最關(guān)鍵的一句呢,它告訴 svnserve.exe,項目目錄訪問權(quán)限的相關(guān)配置是放在 authz.conf 文件里:

    authz-db = authz.conf
    

    當(dāng)然,svn 1.3.2 引入本功能的時候,系統(tǒng)默認(rèn)使用 authz 而不是 authz.conf 作為配置文件。不過由于鄙人是處女座的,有著強烈的完美主義情結(jié),看著 svnserve.conf 有后綴而 passwd 和 authz 沒有就是不爽,硬是要改了。

    2???authz.conf 之用戶分組

    arm\conf\authz.conf 文件的配置段,可以分為兩類,``[group]`` 是一類,里面放置著所有用戶分組信息。其余以 [arm:/] 開頭的是另外一類,每一段就是對應(yīng)著項目的一個目錄,其目錄相關(guān)權(quán)限,就在此段內(nèi)設(shè)置。

    首先,我們將人員分組管理,以便以后由于人員變動而需要重新設(shè)置權(quán)限時候,盡量少改動?xùn)|西。我們一共設(shè)置了5個用戶分組,分組名稱統(tǒng)一采用 g_ 前綴,以方便識別。當(dāng)然了,分組成員之間采用逗號隔開:

    [groups]
    # 任何想要查看所有文檔的非本部門人士
    g_vip = morson
    # 經(jīng)理
    g_manager = michael
    # 北京辦人員
    g_beijing = scofield
    # 上海辦人員
    g_shanghai = lincon
    # 總部一般員工
    g_headquarters = rory, linda
    # 小秘,撰寫文檔
    g_docs = linda
    

    注意到?jīng)]有, linda 這個帳號同時存在“總部”和“文檔員”兩個分組里面,這可不是我老眼昏花寫錯了,是因為 svnserve.exe 允許我這樣設(shè)置。它意味著,這個家伙所擁有的權(quán)限,將會比他的同事 rory 要多一些,這樣的確很方便。具體多了哪些呢?請往下看!

    3???authz.conf 之項目根目錄

    接著,我們對項目根目錄做了限制,該目錄只允許arm事業(yè)部的經(jīng)理才能修改,其他人都只能眼巴巴的看著:

    [arm:/]
    @g_manager = rw
    * = r
    
    • [arm:/] 表示這個目錄結(jié)構(gòu)的相對根節(jié)點,或者說是 arm 項目的根目錄
    • 這里的 @ 表示接下來的是一個組名,不是用戶名。你當(dāng)然也可以將 @g_manager=rw 這一行替換成 michael=rw ,而表達的意義完全一樣。
    • * 表示“除了上面提到的那些人之外的其余所有人”,也就是“除了部門經(jīng)理外的其他所有人”,當(dāng)然也包括總經(jīng)理那個怪老頭
    • * = r 則表示“那些人只能讀,不能寫”

    4???authz.conf 之項目子目錄

    然后,我們要給總部人員開放日志目錄的讀寫權(quán)限:

    [arm:/diary/headquarters]
    @g_manager = rw
    @g_headquarters = rw
    @g_vip = r
    * =
    
    • 我敢打賭,設(shè)計svn的家伙們,大部分都是在 unix/linux 平臺下工作,所以他們總喜歡使用 / 來標(biāo)識子目錄,而完全忽視在 MS Windows 下是用 \ 來做同樣的事情。所以這兒,為了表示 arm\diary\headquarters 這個目錄,我們必須使用 [arm:/diary/headquarters] 這樣的格式。
    • 這里最后一行的 *= 表示,除了經(jīng)理、總部人員、特別人士之外,任何人都被禁止訪問本目錄。這一行是否可以省略呢?
    • 之所以這兒需要將 @g_vip=r 一句加上,就是因為存在上述這個解釋。如果說你沒有明確地給總經(jīng)理授予讀的權(quán)力,則他會和其他人一樣,被 * 給排除在外。
    • 如果眾位看官中間,有誰玩過防火墻配置的話,可能會感覺上述的配置很熟悉。不過這里有一點與防火墻配置不一樣,那就是各個配置行之間,沒有 先后順序 一說。也就是說,如果我將本段配置的 *= 這一行挪到最前面,完全不影響整個配置的最終效果。
    • 請注意這兒,我們并沒有給 arm\diary 目錄設(shè)置權(quán)限,就直接跳到其子目錄下進行設(shè)置了。我當(dāng)然是故意這樣的,因為我想在這兒引入“繼承”的概念。
    • 權(quán)限具備繼承性 任何子目錄,均可繼承其父目錄的所有權(quán)限,除非它自己被明確設(shè)置了其他的權(quán)限。也就是說,在 arm 目錄設(shè)置權(quán)限后, arm\diary 目錄沒有進行設(shè)置,就意味著它的權(quán)限與 arm 目錄一樣,都是只有經(jīng)理才有權(quán)讀寫,其他人只能干瞪眼。
    • 【 * = 是否可以省略】【用例子引入覆蓋】【單用戶權(quán)限的繼承問題】【父目錄權(quán)限集成與全面覆蓋問題】

    現(xiàn)在來看看

    好了,我們現(xiàn)在掌握了“繼承”的威力,它讓我們節(jié)省了不少敲鍵盤的時間??墒乾F(xiàn)在又有一個問題了,

    屬性具備覆蓋性質(zhì)子目錄若設(shè)置了屬性,則完全覆蓋父目錄。

    5???authz.conf 的其他注意點

    1. 父目錄的 r 權(quán)限,對子目錄 w 權(quán)限的影響

    把這個問題專門提出來,是因為在1.3.1及其以前的版本里面,有個bug,即為了子目錄的寫權(quán)限,項目首目錄必須具備讀權(quán)限。因此現(xiàn)在使用了1.3.2版本,就方便了那些想在一個代碼庫存放多個相互獨立的項目的管理員,來分配權(quán)限了。比如說央舜公司建立一個大的代碼庫用于存放所有員工日志,叫做 diary,而arm事業(yè)部只是其中一個部門,則可以這樣做:

    [diary:/]
    @g_chief_manager = rw
    [diary:/arm]
    @g_arm_manager = rw
    @g_arm = r
    

    這樣,對于所有arm事業(yè)部的人員來說,就可以將 svn://192.168.0.1/diary/arm 這個URL當(dāng)作根目錄來進行日常操作,而完全不管它其實只是一個子目錄,并且當(dāng)有少數(shù)好奇心比較強的人想試著 checkout 一下 svn://192.168.0.1/diary 的時候,馬上就會得到一個警告“Access deni”,哇,太酷了。

    1. 默認(rèn)權(quán)限

    如果說我對某個目錄不設(shè)置任何權(quán)限,會怎樣?馬上動手做個試驗,將:

    [diary:/]
    @g_chief_manager = rw
    

    改成:

    [diary:/]
    # @g_chief_manager = rw
    

    這樣就相當(dāng)于什么都沒有設(shè)置。在我的 svn 1.3.2 版本上,此時是禁止任何訪問。也就是說,如果你想要讓某人訪問某目錄,你一定要顯式指明這一點。這個策略,看起來與防火墻的策略是一致的。

    1. 只讀權(quán)限帶來的一個小副作用

    若設(shè)置了:

    [arm:/diary]
    * = r
    

    則svnserve認(rèn)為,任何人,都不允許改動diary目錄,包括刪除和改名,和新增。

    也就是說,如果你在項目初期創(chuàng)建目錄時候,一不小心寫錯目錄名稱,比如因拼寫錯誤寫成 dairy,以后除非你改動 authz.conf 里面的這行設(shè)置,否則無法利用 svn mv 命令將錯誤的目錄更正。

    改進

    1???對中文目錄的支持

    上午上班的時候,Morson 來到 Michael 的桌子前面,說道:“你是否可以將我們的北京辦、上海辦目錄,改成用中文的,看著那些拼音我覺得很難受?” Michael 心想,還好這兩天剛了解了一些與 unicode 編碼相關(guān)的知識,于是微笑地回答:“當(dāng)然可以,你明天下午就可以看到中文目錄名稱了。”

    1. 使用 svn mv 指令,將原來的一些目錄改名并 commit 入代碼庫,改名后的目錄結(jié)構(gòu)如下:

      arm
      ├─工作日志
      │  ├─總部人員
      │  ├─北京辦
      │  └─上海辦
      ├─公司公共文件參考目錄
      └─臨時文件存放處
      
    2. 修改代碼庫的 authz.conf 文件,將相應(yīng)目錄逐一改名

    3. 使用 UltraEdit 將 authz.conf 文件轉(zhuǎn)換成不帶 BOM 的 UTF-8 格式

      將配置文件轉(zhuǎn)換成 UTF-8 格式之后,Subversion 就能夠正確識別中文字符了。但是這里需要注意一點,即必須保證 UTF-8 文件不包含 BOM 。BOM 是 Byte Order Mark 的縮寫,指 UNICODE 文件頭部用于指明高低字節(jié)排列順序的幾個字符,通常是 FFFE ,而將之用 UTF-8 編碼之后,就是 EFBBBF 。由于 UTF-8 文件本身不存在字節(jié)序問題,所以對 UTF-16 等編碼方式有重大意義的 BOM,對于 UTF-8 來說,只有一個作用——表明這個文件是 UTF-8 格式。由于 BOM 會給文本處理帶來很多難題,所以現(xiàn)在很多軟件都要求使用不帶 BOM 的 UTF-8 文件,特別是一些處理文本的軟件,如 PHP、 UNIX 腳本文件等,svn 也是如此。

    目前常用的一些文本編輯工具中,MS Windows 自帶的“記事本”里面,“另存為”菜單保存出來的 UTF-8 格式文件,會自動帶上 BOM 。新版本 UltraEdit 提供了選項,允許用戶選擇是否需要 BOM,而老版本的不會添加 BOM。請各位查看一下自己常用的編輯器的說明文件,看看它是否支持這個功能。

    利用 UltraEdit ,我們可以將 BOM 去掉。方法是,首先利用“UTF-8 TO ASCII”菜單將文件轉(zhuǎn)換成本地編碼,通常是GB2312碼,然后再使用“ASCII TO UTF-8(UNICODE Editing)”來轉(zhuǎn)換到 UTF-8 即可。

    ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 作者:鄭新星

    ??????? 在上一篇帖子中介紹了Subversion版本控制軟件的安裝方法,另外還轉(zhuǎn)貼了一篇Subversion權(quán)限控制的文章,出于工作的需要和學(xué)習(xí)態(tài)度的角度,還是希望自己到手來體驗Subversion權(quán)限控制的魅力。

    ??????? 如果對Subversion安裝有疑問的話,請看作者另一篇帖子:http://www.tkk7.com/coldtear/archive/2006/08/04/61668.aspx,在這篇帖子里詳細(xì)介紹了Subversion的安裝步驟。

    ??????? 在作者看了轉(zhuǎn)貼(《Subversion權(quán)限詳解》)文章后,按照文章中的方法進行設(shè)置后,出現(xiàn)了一些問題,總是提示沒有權(quán)限這樣的錯誤,錯誤提示為:“錯誤 Authorization failed”,對配置文件進行一些修改后,終于可以實現(xiàn)權(quán)限控制了,這里將作者碰到問題后的解決辦法寫出來,希望能給和我碰到同樣問題的朋友些幫助。

    ??????? 如果您按照http://www.tkk7.com/coldtear/archive/2006/09/05/67808.aspx這篇文章設(shè)置后,也提示沒有權(quán)限的錯誤,那么請您按照下面的方法操作。

    修改conf\authz文件如下,主要是路徑的修改:

    [groups]
    g_vip = morson
    g_manager = michael
    g_beijing = scofield
    g_shanghai = lincon
    g_headquarters = rory, linda
    g_docs = linda
    #這里多加了一個根目錄的權(quán)限控制描述
    [/]
    @g_manager = rw
    * =

    #以下部分對路徑做了一些修改 [/arm] @g_manager = rw * = r
    [/arm/diary/headquarters] @g_manager = rw @g_headquarters = rw @g_vip = r * =
    [/arm/diary/beijing] @g_manager = rw @g_beijing = rw @g_vip = r * =
    [/arm/diary/shanghai] @g_manager = rw @g_shanghai = rw @g_vip = r * =
    [/arm/ref] @g_manager = rw @g_docs = rw * = r
    [arm:/temp] * = rw
    經(jīng)過這樣的修改后,訪問時不會再報沒有權(quán)限的錯誤,可以定制自己的權(quán)限控制了。
    Subversion對中文目錄的支持是非常好的,按照文章中的方法,可以很輕松的進行中文目錄的權(quán)限控制,
    當(dāng)然,在保存authz文件時一定不要忘記選擇保存為“UTF-8 無BOM”。
    posted on 2007-03-06 23:02 小石頭 閱讀(454) 評論(0)  編輯  收藏 所屬分類: Subversion
    主站蜘蛛池模板: 亚洲爽爽一区二区三区| 国产精品免费福利久久| 免费黄色毛片视频| 亚洲福利一区二区三区| 亚洲无码日韩精品第一页| 亚洲爆乳大丰满无码专区| 精品国产呦系列在线观看免费| 国产美女无遮挡免费视频网站| 亚洲精品宾馆在线精品酒店| 日韩免费高清视频| 久久亚洲精品中文字幕无码| 亚洲熟妇无码一区二区三区| 成人免费777777| 日本系列1页亚洲系列| 亚洲一区免费观看| 国产a不卡片精品免费观看| 久久国产亚洲电影天堂| 七色永久性tv网站免费看| 久久久婷婷五月亚洲97号色 | 婷婷精品国产亚洲AV麻豆不片 | 精品亚洲AV无码一区二区| 最近的免费中文字幕视频| 日日噜噜噜噜夜夜爽亚洲精品| 国产精品小视频免费无限app| 亚洲国产精品无码久久一区二区| 国产v亚洲v天堂a无| 日本高清免费网站| 国产精品极品美女自在线观看免费| 亚洲精品乱码久久久久久久久久久久| 精品亚洲永久免费精品| 亚洲一区二区三区久久| 国产a不卡片精品免费观看| 成人性生交大片免费看好| 亚洲精品456播放| 久久这里只精品99re免费| 亚洲天堂2017无码中文| 全部免费毛片免费播放| 无码中文字幕av免费放dvd| 亚洲视频无码高清在线| 99热在线精品免费全部my| 羞羞漫画页面免费入口欢迎你|