linux安裝svn,配置使用者、使用者組許可權
一、安裝svn
yum -y install subversion
2.安裝完成後建立倉庫
svnadmin create /xx科技
cd /xx科技 ,到倉庫目可以看到下面的配置檔案
cd /conf 目錄
編輯svnserve.conf主配置檔案,對以下幾項修改如下
[general]
anon-access = none #取消匿名訪問
auth-access = write #授權使用者有可寫許可權
password-db = passwd #指定使用者配置檔案,後面會用到
authz-db = authz #指定許可權配置檔案,後面會用到
編輯passwd檔案,建立svn客戶端使用者以及密碼:
[users]
yangfen = 951340
yangzi = 567452
caoweitao = 273621
chenfei = 169673
編輯authz,配置使用者組和許可權:
組:
[groups]
總經辦 = yangzi
市場運營部 = yangfen
IT開發部 = caoweitao,chenfei
許可權:
[xx科技:/] @總經辦 = rw [xx科技:/總經辦] @總經辦 = rw * = [xx科技:/市場運營部] @總經辦 = rw @市場運營部 = rw * = [xx科技:/IT中心] @總經辦 = rw @IT開發部 = rw @IT產品部 = rw @IT資料部 = rw * = [xx科技:/IT中心/IT開發部] @總經辦 = rw @IT開發部 = rw * =
對於多級目錄的分析:
[xx科技:/IT中心/IT開發部]
@總經辦 = rw
@IT開發部 = rw
* =
這裡最後一行的 ``* =`` 表示,除了指定組總經辦、IT開發部的人員之外,任何人都被禁止訪問本目錄。這一行是否可以省略呢?不行,因為 **許可權具備繼承性** ,子目錄會自動擁有父目錄的許可權。若沒有這一行,則擁有"IT中心"目錄讀取許可權的人都可以讀取 "/IT中心/IT開發部" 目錄下的檔案。假如我們並沒有設定這個目錄的父目錄許可權,可是預設的規則使得 "IT中心" 目錄的許可權與根目錄完全一樣。所以簡單來說, ``* =`` 這一句的目的,就是割斷許可權繼承性,使得管理員可以定製某個目錄及其子目錄的許可權,從而完全避開其父目錄許可權設定的影響
在前面的描述中,我們都採用 ``[repos:/some/dir]`` 這樣的格式來表示專案的某個目錄,比如 ``[xx科技:/總經辦]`` 。而實際上,Subversion允許你採用 ```[/some/dir]`` 這樣的格式,即不指定程式碼庫的方式來表示目錄,此時的目錄就匹配所有專案。
對於使用 svnserve 的使用者來說,只有當 svnserve 執行的時候使用了 ``-r`` 引數,並且讓多個程式碼庫共享同一個目錄許可權檔案(即 authz.conf 或 authz)時,不指明程式碼庫名稱才有可能惹麻煩。一般情況下,我們對每個程式碼庫都會獨立使用配置檔案,畢竟每個專案的目錄結構,都有很大不同,混在一起意義不大。因此一般來說,為簡潔起見,都可以不指明程式碼庫名稱。本文全都指明瞭程式碼庫名稱,主要是為了將來擴充套件成同一個配置檔案,以方便配合 Apache 伺服器。
對於使用 Apache 的使用者來說,它們二者可有著很大的不同,因為此時往往習慣於使用一個公共的目錄許可權配置檔案。如果你使用了 SVNParentPath 指令,則指定版本庫的名字是很重要的,因為假若你使用後者,那麼 ``[/some/dir]`` 部分就會與所有程式碼庫專案的``[/some/dir]`` 目錄匹配。如果你使用 SVNPath 指令,則這兩種表示方式就沒有什麼區別了,畢竟只有一個版本庫。
3.父目錄的 ``r`` 許可權,對子目錄 ``w`` 許可權的影響
在1.3.1及其以前的版本里面,有個bug,即某個帳號為了對某個子目錄具備寫許可權,則必須對其父目錄具備讀許可權。因此現在使用了1.3.2及其更高的版本,就方便了那些想在一個程式碼庫存放多個相互獨立的專案的管理員,來分配許可權了。比如說央舜公司建立一個大的程式碼庫用於存放所有員工日誌,叫做 diary,而SVN事業部只是其中一個部門,則可以這樣做::
[diary:/]
@g_chief_manager = rw
[diary:/SVN]
@g_SVN_manager = rw
@g_SVN = r
這樣,對於所有SVN事業部的人員來說,就可以將svn://192.168.0.1/diary/SVN 這個URL當作根目錄來進行日常操作,而完全不管它其實只是一個子目錄,並且當有少數好奇心比較強的人想試著 checkout 一下 svn://192.168.0.1/diary 的時候,馬上就會得到一個警告“Access denied”。