1. 程式人生 > >Linux下SVN server 的使用及許可權配置

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服務,以上配置的三個檔案就都起作用了!