svn的許可權設定資訊記錄在authz這個檔案中。如果對含有中文名稱的資料夾進行許可權管理,需要把authz儲存為utf-8格式。不推薦使用windows的記事本儲存為utf-8格式,可以用ultraedit或者editplus等文字編輯工具。
許可權分配時,應遵守從根目錄到子目錄、從最寬泛許可權到最精細許可權、從唯讀許可權到讀寫許可權的設定原則。即從根目錄開始設定最寬泛的訪問許可權,然後逐步設定子目錄的具體訪問許可權。
服務端
客戶端
現舉例說明svn許可權分配:
單資源庫的配置
假設repos1是svn的乙個資源庫,其路徑是d:\svnrepos\repos1(建立資源庫的命令列是d:\svnrepos>svnadmin create repos1)在庫中有2個資源專案:project1_1和project1_2
在repos1\conf中,有三個檔案:svnserve.conf、authz、passwd 下面分別對各檔案的配置進行說明:
svnserve.conf
說明:檔案中每一行最前面都不能有空格,而以#開頭的是注釋。
找到以下幾行:
# anon-access = read
# auth-access = write
# password-db = passwd
# authz-db = authz
1.把#和#後面的空格去掉。
2.把anon-access = read改為anon-access = none 這樣配置表示不讓匿名使用者訪問資源。
3.auth-access = write表示通過驗證的使用者擁有寫許可權;password-db = passwd表示使用者名稱和密碼放在passwd檔案;authz-db = authz表示專案許可權設定放在authz檔案。
passwd
假設該檔案已做了如下設定:
[users]
harry = harry
sally = sally
john = john
scott = abc123
說明:在[users]之下,就是所有設定的使用者名稱和密碼,每一行設定乙個使用者。等號左邊是使用者名稱,右邊是密碼。例如scott = abc123表示設定了乙個使用者名稱scott,密碼abc123。如果想取消使用者可以刪除該行或者在該行的前面加#將其注釋掉。
本文重點關注的是authz這個檔案
authz
假設該檔案已做了如下設定:
[groups]
admin = scott
user1 = harry,john
user2 = sally
說明:這一節點表示對使用者組進行配置,等號左邊是組名,右邊是使用者名稱。乙個組中如有多個使用者可使用逗號(,)分隔。使用者名稱必須是passwd中有效的使用者名稱。
[/]@admin = rw
@user1 = r
@user2 = r
說明:這一節點表示對資源庫repos的訪問許可權進行設定,用/來表示。
許可權分為三種:r--唯讀,w--可寫,留空不寫--沒有任何許可權,每行許可權設定不分先後順序
使用組名時必須有@符號。@admin = rw表示admin組的使用者對資源庫所有的資源擁有讀寫許可權
[/project1_1]
@user1 = rw
@user2 =
說明:該節點是對資源專案project1_1進行許可權配置。可以看到user1組對資源專案project1_1擁有讀寫許可權,而user2組沒有任何許可權。而對於admin組來說,也有讀寫許可權。雖然這裡沒有明確寫出。這涉及到了許可權的繼承性問題。因為在[/]節點的設定中,admin組的許可權是rw,所以在這裡也是rw
[/project1_2]
@user2 = rw
@admin = rw
john = r
* =說明:該節點是對資源專案project1_2進行許可權配置。可以為單個使用者分配許可權,而不一定要引用組名,比如john = r。看到這個節點的配置,你可能會有個疑問:這裡為什麼明確寫出admin組的許可權,不是可以繼承嗎?這是因為使用了星號(*)萬用字元。星號在這裡代表除了已經明確寫出許可權的使用者組和使用者外,其他的使用者組和使用者,即代表user1組和使用者harry。如果不明確寫出admin組的許可權,則admin組的許可權將由星號的許可權來決定。所以在使用星號時要小心,因為它會切斷許可權的繼承性。
多資源庫的配置
在之前單資源庫的基礎上,我們假設還有乙個資源庫repos2,其路徑是d:\svnrepos\repos2,在庫中也有2個資源專案:project2_1和project2_2。此時的配置我們需要考慮兩種情況:
第一種:每個資源庫使用不同的使用者和使用者組
此種情況,只需按照之前單資源庫的配置說明,對資源庫repos2進行相應的配置即可。只是啟動服務的命令列不同:
單資源庫是 d:\svnrepos>svnserve -d -r repos1
多資源庫是 d:\>svnserve -d -r svnrepos
啟動多資源庫的服務時,不再指向某個庫資料夾,而是庫資料夾的上級資料夾。
訪問資源專案的url也不同,比如:
單資源庫是 svn:
多資源庫是 svn:/repos1
訪問多資源庫時需要指明資源庫名。
第二種:多個資源庫使用相同的使用者和使用者組
假設資源庫repos2的使用者和使用者組與repos1是一樣的,對於這種情況,我們需要做以下配置:
1.把repos1的passwd和authz複製到d:\svnrepos下
2.修改repos1和repos2的svnserve.conf檔案:
password-db = passwd改為password-db = /svnrepos/passwd
authz-db = authz改為authz-db = /svnrepos/authz
3.配置d:\svnrepos下的authz檔案,假設配置如下,可以看出和單資源庫的配置最大的不同就是每個資源專案節點名中都以資源庫名作為字首
[groups]
admin = scott
user1 = harry,john
user2 = sally
[repos1:/]
@admin = rw
@user1 = r
@user2 = r
[repos1:/project1_1]
@user1 = rw
@admin = rw
* =[repos1:/project1_2]
@user2 = rw
@user1 =
[repos2:/]
@admin = rw
@user1 = r
@user2 = r
[repos2:/project2_1]
@user1 = rw
@admin = rw
* =[repos2:/project2_2]
@user2 = rw
@admin = rw
* =關於svn服務
如果要把svn服務設定成windows系統服務,使用如下命令列:(假設svn服務端安裝在d:\subversion)
注意等號後面的空格是必須的。
單資源庫:
sc create svnservice binpath= "d:\subversion\bin\svnserve.exe --service -r d:\svnrepos\repos1" displayname= "svnservice" depend= tcpip start= auto
多資源庫:
sc create svnservice binpath= "d:\subversion\bin\svnserve.exe --service -r d:\svnrepos" displayname= "svnservice" depend= tcpip start= auto
SVN許可權設定和說明
因為專案要求,個別使用者不容許看到工程的某些目錄,調查後svn是可以實現這種需求的。svn許可權三種 1 r 唯讀許可權。2 w 寫許可權。3 空 沒有許可權 passwd檔案 users user1 123 建立使用者user1,密碼是123 user2 456 建立使用者user2,密碼是456...
SVN 許可權配置具體說明
分配許可權時。資料夾應該應該遵從從大到小,許可權應該從小到大的規則 即 資料夾從根資料夾開始,許可權從沒有許可權 為空就可以 到可寫再到可讀寫。首先要檢視是否改動這個資料夾下的乙個配置檔案,假設沒有就改動 1 vi svnserve.conf 全路徑如 vi usr local svn conf s...
如何設定SVN目錄許可權
svnbucket 目錄許可權分為3類,讀寫 唯讀 無許可權 1.設定可讀寫目錄。如下圖,這種設定方式比較安全,使用者只能讀寫指定的目錄,就算增加了新資料夾,只要不是它的子目錄,他都是沒有許可權看到的,但是缺點就是checkout的時候不能從根目錄checkout,需要加上完整許可權目錄,如果是有多...