• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    建立一個安全的Subversion服務器

    發布: 2007-6-22 07:38 | 作者:   | 來源:   | 查看: 101次 | 進入軟件測試論壇討論

    領測軟件測試網

       
      最近一個客戶聘請了一個網絡開發團隊來幫助他的工作過度的網管。他們要求我安裝一個版本控制系統,這個系統能夠保證團隊中的任何成員避免無意中修改別人的文件,并且能夠給予管理員恢復文件到任何版本的機制。
      

      我的第一個想法就是Subversion。因為它是我寫BSD Hacks 時和編輯器一起用的版本控制系統。在Ports Collection中搜索一下之后發現,Subversion需要好幾個相關的port。比如,esvn看起來相當適合客戶端,因為它的GUI界面能夠運行在Unix,Mac OS X以及Windows中。對于一個對Unix技術掌握不深的網絡開發團隊而言,當他們需要把數據存貯在FreeBSD服務器上而從非FreeBSD系統讀取時,esvn是非常好的選擇。
      
      前期準備
      
      在我的想法中,只允許開發團隊的成員具有權限訪問倉庫是非常重要的。同時,我們把倉庫放在和目前的web服務器分開的操作系統上,當web管理員看到適合的文件時,由他負責把文件從倉庫復制到web服務器上。
      
      為了實現這個目的,先對已存在的你想放到版本控制系統下的目錄結構做一個備份,然后把它安全發送到倉庫服務器。在我的例子中,我把web服務器上www目錄的數據備份到一臺內網服務器
      192.168.2.2上。
      
      # tar czvf - /usr/local/etc/www/data | ssh dru@192.168.2.2 "cat > www.tar.gz"
      
      下一步是在倉庫服務器上建立一個svn組,并把已存在的需要訪問倉庫的用戶加到這個組中。比如,當我創建svn組后,我在/etc/group加入這句話把已存在的web管理員用戶加進去:
      
      # vi /etc/group
      svn:*:3690:webadmin
      
      然后,新建一個用戶svn。如果有必要,你還需創建所有要訪問倉庫系統的用戶帳號(如果他們還沒有創建)。要保證每個用戶是svn的成員并且有密碼和可用的shell。我使用sysinstall為新的網絡工程師建立用戶帳號。完成以后,我雙擊svn組的成員。大概就像這樣:
      
      # grep svn /etc/group
      svn:*:3690:webadmin,devel1,devel2
      
      處理 umask在安裝Subversion之前,我們先看看svn用戶的umask。在我的FreeBSD系統上,它是這樣的:
      # su -l svn
      % umask
      022
      
      在UNIX中,用戶umask值決定了新建目錄或文件的默認權限。這是通過關閉某些權限達到的。如果你記得:
      r = 4
      w = 2
      x = 1
      
      你應該看得出這個umask沒有對用戶(svn)關閉任何權限(0);它對組(svn)關閉了寫權限(2);它對其他組用戶關閉了寫權限(2)。
      
      因為svn組的成員必須能夠寫入倉庫,所以把umask中關于組的 2 改為 0。甚至如果你不想讓其他組成員知道這個倉庫的存在,你可以把關于其他組成員的 2 改為 7。
      
      修改用戶svn的shell配置比較簡單。如果用戶使用 csh:
      % vi ~svn/.cshrc
      ,那么找到umask那行并把它改為 002 或 007。如果你的svn用戶不用csh,修改你的shell配置文件。如果你把你的修改保存在 ~svn/.cshrc (或別的地方),別忘了告訴shell:
      % source ~svn/.cshrc
      
      再敲一次 umask 命令,以保證你的修改有效。
      
      安裝Subversion ,并讓它擁有正確的umask
      
      如果你選擇一個002的umask,那么當你從ports collection生成Subversion的時候,你能把一個wrapper編譯進去。如果你選擇一個007的umask或安裝已預編譯好的Subversion,那就要創建一個wrapper腳本來保證你的Subversion二進制文件使用你的umask值。
      
      使用wrapper編譯,使其umask值為002:
      # cd /usr/ports/devel/subversion
      # make -DWITH_SVNSERVE_WRAPPER install clean
      
      或者,你可以安裝已預編譯的二進制代碼包
      # pkg_add -r subversion
      
      注意:無論使用何種方法,安裝之前都應該把這篇文章看完!因為你可以發現一些額外的讓你感興趣的編譯選項!
      
      如果你不在wrapper中編譯,請移動你的代碼到相應的位置,并創建你自己的wrapper腳本:
      # mv /usr/local/bin/svn /usr/local/bin/svn.orig# vi /usr/local/bin/svn#!/bin/sh#wrapper script to set umask to 007 on subversion binariesumask 007/usr/local/bin/svn.orig "$@"
      
      設置你的umask值為002或007,使它和syn用戶的umask值一樣。別忘了設置你的wrapper腳本為可執行的:
      # chmod +x /usr/local/bin/svn
      
      創建倉庫
      
      既然環境搭好了,那你就可以創建倉庫了。用svn用戶登錄以保證svn用戶和svn組擁有你在倉庫中創建的文件。在 /usr/home/svn/目錄中,鍵入:
      % svnadmin create repository
      
      在這個例子中,我的倉庫名為repository。你可以選擇任何對你有幫助的名字。svnadmin create 僅僅創建了Subversion工具所需要的目錄結構。
      % ls -F repository
      README.txt dav/ format locks/
      conf/ db/ hooks/
      
      注意目錄db是默認生成的。因為Subversion使用數據庫跟蹤倉庫中文件的變化,所以你必須把你的數據放到數據庫中。然后,我把備份文件解壓縮,這樣就有的一些可以放進去的數據。但是要注意這么做的時候,不要把備份文件直接恢復到~svn/repository目錄下。(記得否,它是個數據庫)。相反,我新建了個目錄結構:
      % pwd
      /usr/home/svn
      % mkdir www && cd www
      % mkdir branches tags trunk
      % cd trunk
      % tar xzvf /full/path/to/www.tar.gz .
      % cd
      
      這樣,svn用戶的主目錄結構像這樣:
      % ls -F ~svn
      repository/ www/
      
      導入數據
      
      下一步,應該把~svn/www/的數據導入到Subversion服務器了。為了實現這個目的,可以使用 svn import 命令:
      % svn import www file:///usr/home/svn/repository/www -m "initial import"
      
      svn import 是svn的許多命令中用戶可以使用的一條。鍵入 svn help 可以看到所有可以使用的命令的名字。如果你在svn和help中插入命令,比如 svn import help,你就可以看到那條命令的語法幫助。在svn import后面的是包含要導入數據的目錄的名字(www)。你的數據不一定非得在相同的目錄下,它僅僅是定義了到數據的完整路徑,但必須保證你的svn組用戶擁有訪問導入數據的權限。注意:如果你已經導入的數據,原始數據就沒有必要留在硬盤上了。在我的例子中,我使用了這條命令:
      rm -Rf www。
      
      接下來,請注意當我定義倉庫的完整路徑時所使用的語法。Subversion支持多URL模式或者RA(repository access)模塊。檢驗你的Subversion支持哪種模式:
      #svn --version
      svn, version 1.1.3 (r12730)  compiled Mar 20 2005, 11:04:16Copyright (C) 2000-2004 CollabNet.Subversion is open source software, see http://subversion.tigris.org/This product includes software developed by CollabNet (http://www.Collab.Net/).The following repository access (RA) modules are available:* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol. - handles 'http' schema - handles 'https' schema* ra_local : Module for accessing a repository on local disk. - handles 'file' schema* ra_svn : Module for accessing a repository using the svn.network protocol. - handles svn schema
      因為我想要在本地路徑訪問倉庫,所以我使用了file:/// 模式。我還可以在這URL后面加上www,因為我想訪問倉庫中名為www的目錄。當然,你能在同一個倉庫中導入多個目錄結構,并且用容易記住的名字命名。
      
      最后,我使用了 -m 消息開關把注釋:"initial import"加入倉庫日志中。如果我不包括這個參數,svn將使用默認編輯器(vi)打開日志并要求我填入注釋,否則無法進入下一步。
      
      這是非常關鍵的一個地方。安裝一個版本控制系統的全部原因是為了允許許多用戶修改文件,并且有可能是并發的。每一個用戶都應該負責任的記錄清楚他們對哪些文件作了哪些改動。你的工作就是讓他們明白為什么svn命令總是提示他們加入注釋。
      
      確定如何訪問倉庫
      
      恭喜你!你現在擁有了一個可以工作的倉庫!現在到了仔細比較各種不同的URL模式并選出最適合你需求的訪問方法的最好的時間。
      
      免費電子文檔Version Control with Subversion第六章詳細介紹了各種可能的配置。你可以在編譯FreeBSD port的時候,在 make 命令后添加參數 -DWITH_BOOK,把書安裝上。
      
      如果你的用戶通過本地或ssh登錄系統,可以使用 file:/// 訪問。因為用戶對于倉庫時本地(local)的,所以這種情況下,系統不會打開一個 TCP/IP端口監聽Subversion連接。然而,它卻要求每個用戶有一個活動的shell帳號并且假定你的用戶可以登錄Unix服務器。和別的shell帳戶一樣,其安全性能由這幾方面決定:用戶密碼的健壯性;倉庫權限以及組成員的正確配置。讓用戶通過ssh登錄系統并不保證session已被加密。
      
      另一種方案是把Subversion整合進apache服務器。默認情況下,Subversion 的FrssBSD port支持SSL編譯,這意味著你的用戶可以在瀏覽器中使用 https:// 模式訪問倉庫。然而,如果你的apache版本是2.X而不是1.X,要記得在編譯的時候把參數-DWITH_MOD_DAV_SVN 加入到 make后面。
      
      如果你考慮讓用戶通過瀏覽器訪問,要先仔細閱讀Subversion文檔關于apahce httpd配置部分,然后你要配置不少東西。幸運的是,文檔很完整!
      
      第三種方案時使用 svnserve 監聽網絡連接。文檔建議采用這種模式,無論是通過inetd還是獨

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>