Linux下SVN server 的使用及權限配置


一、安裝SVN

Linux 下可以直接通過如下命令直接獲取svn server:(我使用的服務器系統為Debian 7.5 穩定版)

apt-get install subversion

安裝完成后,可通過svnserve --version 查看安裝的版本,我所使用的svn server 版本為1.6.17:

 

二、創建代碼庫

創建庫(以test庫為例):

sudo svnadmin create /home/user/svn/test

這樣,一個簡單的代碼倉庫就創建完成了。

接下來啟動svn服務:

svnserve -d -r /home/user/svn/test

然后client端就可以通過“svn://ip.ip.ip.ip/test”來訪問svn了。

 

三、權限配置

進入test目錄之后,你會看到里邊有個“conf”文件夾,進入conf文件夾,ls一下,你會看到有三個文件authz、passwd、svnserve.conf三個配置文件,其中authz用來配置用戶訪問權限的,passwd用來配置用戶及密碼,svnserve.conf是對整個svnserve的進程進行配置的。

使用nano或者vi工具打開svnserve.conf,找到“# password-db = passwd”,這一句是指定當前庫所對應的用戶配置文件的,我們需要把最前邊的“#”和空格刪掉;

找到“# anon-access = none”

  “# auth-access = write”這兩句,第一句是用來控制匿名訪問的,我們直接給它設置成none就好了,第二句用來控制經過驗證允許訪問庫的用戶的權限,這里我們設置成write就可以,當然,也要把前邊的“#”和空格都刪掉;

找到“# authz-db = authz”,這一句是用來指定當前庫對應的用戶權限配置文件的,我們把最前邊的“#”和空格都刪掉,這樣庫在運行的時候要根據authz這個配置文件去匹配用戶權限。

 

到這里,我們的所有配置文件都可以起到他們應有的作用了,接下來就是對細節的具體配置:

對於passwd:

很簡單,在最后直接添加用戶就好,格式為:“用戶名 = 密碼”,例如:“test_user = 12345”

對於authz:

主要是分為兩類配置:[groups]類配置、以[repo:/]開頭的配置。

1.[groups]的配置很容易理解,就是群組。格式也比較簡單,即“group_name = user1,user2,user3”,如果有多個用戶,可以直接通過“,”的方式拼接就可以了,例如:

    [groups] 

    # 經理 
    g_manager = michael  
    # 北京辦人員 
    g_beijing = scofield  
    # 上海辦人員 
    g_shanghai = lincon  
    # 總部一般員工 
    g_headquarters = rory, linda  

2.以[repo:/]開頭的配置,上邊的[gourps]配置是用來划分用戶分組的,那么以[repo:/]開頭的配置就是用來具體的划分用戶讀寫權限的了,其中repo是你的庫的名字,即上邊我們通過“svnadmin create /home/user/svn/test”命令所創建的庫“test”,下邊我們直接用例子來說明它的使用方法:

對項目根目錄做限制,該目錄只允許經理才能修改,其他人都只能擁有讀的權限:  
    [test:/] 
  @g_manager = rw

  * = r  
“[test:/]” 表示這個目錄結構的相對根節點,或者說是 test 項目的根目錄。這里的 “@” 表示接下來的是一個組名,不是用戶名。因為目前 g_manager 組里面只有一個 michael,你當然也可以將 “@g_manager = rw” 這一行替換成 “michael = rw” ,表達的意義完全一樣。  
“*” 表示“除了上面提到的那些人之外的其余所有人”,也就是“除了部門經理外的其他所有人” 
“* = r” 則表示“那些人只能讀,不能寫”。

對於根目錄下邊的子目錄,其權限配置方式是相同的,是需要把地址指明就可以了,即[test:/folder1/folder2],這里就不贅述了。

 

注意:配置中我們可能會遇到“* =”這樣的情況,他的目的是用來隔斷權限的繼承性。如果在某一級目錄的權限配置里加上這一句,則表明除了該配置中的用戶之外的其他用戶完全沒有這一級目錄的任何權利,既不可讀,更不可寫。

 

當所有的三個文件全都配置完成之后,接下來就是要讓它們都生效了,首先我們需要確保svnserve服務已經停掉了,可以通過“ps aux|grep svn”的方式來查看svn時候還在運行,如果還在運行的話直接通過“kill -9 [svn進程編號]”的方式把它停掉就可以了,然后在通過命令“svnserve -d -r /home/user/svn/”來重新啟動svn服務,以上配置的三個文件就都起作用了!

 

相關參考:

debian 7上安裝svn:

http://www.cnblogs.com/xusir/p/3326142.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM