亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

建立一個安全的Subversion服務器

2019-11-18 12:43:23
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91成人天堂久久成人| 亚洲精品二三区| 亚洲mm色国产网站| 91av在线免费观看| 亚洲乱码一区av黑人高潮| 亚洲欧美日韩图片| 一本色道久久综合亚洲精品小说| 亚洲欧美视频在线| 欧美国产亚洲视频| 亚洲视频综合网| 国产婷婷色综合av蜜臀av| 97久久久免费福利网址| 中文字幕欧美日韩| 国产精品香蕉在线观看| 日本精品va在线观看| 精品久久国产精品| 欧美高跟鞋交xxxxxhd| 亚洲免费影视第一页| 91亚洲一区精品| 欧美日韩国产精品专区| 久热精品视频在线观看一区| 欧美xxxx做受欧美| www.亚洲一二| 中国人与牲禽动交精品| 日本免费在线精品| 国产精品日韩一区| 精品国产91乱高清在线观看| 精品亚洲va在线va天堂资源站| 久久精品青青大伊人av| 日韩在线一区二区三区免费视频| 日韩欧美国产高清91| 欧美激情按摩在线| 日韩经典一区二区三区| 亚洲人成电影在线播放| 日韩亚洲欧美中文高清在线| 热门国产精品亚洲第一区在线| 羞羞色国产精品| 国产欧美日韩中文字幕在线| 亚洲影院在线看| 色黄久久久久久| 91精品国产乱码久久久久久久久| 亚洲韩国日本中文字幕| 国产亚洲欧美一区| 国产精品自在线| 4k岛国日韩精品**专区| 日韩美女免费线视频| 国产日韩欧美中文| 中文字幕视频在线免费欧美日韩综合在线看| 欧美在线精品免播放器视频| 亚洲无线码在线一区观看| 丝袜亚洲欧美日韩综合| 久久精品小视频| 精品激情国产视频| 在线日韩av观看| 91成人福利在线| 欧美精品久久久久久久| 亚洲一品av免费观看| 国内精品模特av私拍在线观看| 成人亚洲欧美一区二区三区| 夜夜嗨av一区二区三区免费区| 久久免费成人精品视频| 成人网在线免费观看| 最近2019中文字幕在线高清| 精品久久久久久国产91| 久久成年人免费电影| 欧美性猛交xxxx黑人猛交| 欧美日韩国产综合新一区| 久久久久久久久久国产精品| 国产精品福利网| 一区二区三欧美| 久久黄色av网站| 91久久精品久久国产性色也91| 国语自产精品视频在线看一大j8| 色妞色视频一区二区三区四区| 国产成人精品视| 亚洲欧美精品一区二区| 日韩中文字幕免费看| 亚洲国产日韩欧美综合久久| 国产一区二区三区在线播放免费观看| 亚洲人成人99网站| 青青久久av北条麻妃海外网| 亚洲精选一区二区| 欧美人与性动交a欧美精品| 国产成人精品亚洲精品| 欧美限制级电影在线观看| 国产亚洲在线播放| 91精品国产综合久久香蕉最新版| 久久国产精品久久久| 亚洲欧美激情在线视频| 亚洲成人激情在线观看| 国产成人亚洲综合91精品| 国内精品久久久| 55夜色66夜色国产精品视频| 久久久免费观看| 国产精品成人久久久久| 久热精品视频在线观看一区| 日本国产欧美一区二区三区| 中文字幕免费国产精品| 精品一区二区三区三区| 欧美福利视频在线观看| 全亚洲最色的网站在线观看| 欧美日韩精品在线| 国产成人精品视频在线| 色偷偷亚洲男人天堂| 欧美噜噜久久久xxx| 日本不卡视频在线播放| 久久视频在线看| 欧美日韩亚洲成人| 亚洲福利视频网站| 一区二区三区在线播放欧美| 久久久97精品| 国产精品第一页在线| 国产欧美亚洲视频| 国产精品一区电影| 亚洲欧洲激情在线| 欧美激情乱人伦一区| 亚洲一区二区日本| 亚洲第一偷拍网| 97在线视频观看| 2021久久精品国产99国产精品| 伦伦影院午夜日韩欧美限制| 欧美大全免费观看电视剧大泉洋| 国产精品久久久久高潮| 久久久国产精品视频| 亚洲影院色在线观看免费| 欧美成人全部免费| 久久国产精品视频| 欧美国产日韩一区二区在线观看| 日韩视频精品在线| 成人免费午夜电影| 欧美成aaa人片在线观看蜜臀| 日韩在线一区二区三区免费视频| 亚洲成人久久久久| 亲爱的老师9免费观看全集电视剧| 亚洲乱码av中文一区二区| 国内精品中文字幕| 91成品人片a无限观看| 精品呦交小u女在线| 亚洲国产精品女人久久久| 欧美日韩激情小视频| 热re99久久精品国产66热| 98午夜经典影视| 国产精品免费视频xxxx| 国产精品欧美久久久| 午夜精品www| 在线播放日韩欧美| 精品久久久久久久久久国产| 亚洲欧美精品一区| 欧洲成人免费视频| 成人黄色大片在线免费观看| 亚洲男女性事视频| 精品亚洲aⅴ在线观看| 丝袜情趣国产精品| 九九精品视频在线| 久久久久久这里只有精品| 精品av在线播放| 亚洲自拍偷拍在线| 91精品国产综合久久久久久蜜臀| 欧美成人免费播放| 亚洲级视频在线观看免费1级| 97超视频免费观看| 日韩美女av在线| 日韩大陆欧美高清视频区| 97碰在线观看|