一般來說,公司有多個項目,在搭建好SVN伺服器之後,就需要使用SVN來實現不在一個項目中的開發人員不能訪問其它項目中的代碼。 ...
一 需求
一般來說,公司有多個項目,在搭建好SVN伺服器之後,就需要使用SVN來實現不在一個項目中的開發人員不能訪問其它項目中的代碼。
假設:
有3個項目:project1、project2、project3
開發人員有6個人:eg1、eg2、eg3、eg4、eg5、eg6
eg1、eg2,只能訪問project1;
eg3、eg4,只能訪問project2;
eg5、eg6,只能訪問project3;
二 實現
在倉庫根路徑下:假設是/home/svnroot
# cd /home/svnroot
# 創建三個代碼倉庫
# svnadmin create project1
# svnadmin create project2
# svnadmin create project3
# 把兩個許可權配置文件複製到 倉庫根路徑下,統一管理所有代碼倉庫
# cd /projcet1/conf
# cp authz passwd /home/svnroot
# 打開配置文件
# vim svnserve.conf
修改成如下:
anon-access = none # 禁止匿名訪問
auth-access = write
password-db = /home/svn/passwd # 統一使用密碼文件
authz-db = /home/svn/authz
realm = project1 # 許可權功能變數名稱,很重要,寫你的項目名
分別修改 project2 的 svnserve.conf,和上面一樣,最後一行分別寫
anon-access = none # 禁止匿名訪問 auth-access = write password-db = /home/svn/passwd # 統一使用密碼文件 authz-db = /home/svn/authz realm = project2 # 許可權功能變數名稱,很重要,寫你的項目名
分別修改 project3 的 svnserve.conf,和上面一樣,最後一行分別寫
anon-access = none # 禁止匿名訪問 auth-access = write password-db = /home/svn/passwd # 統一使用密碼文件 authz-db = /home/svn/authz realm = project3 # 許可權功能變數名稱,很重要,寫你的項目名
修改兩個許可權管理文件:
cd /home/svnroot
vim passwd
# 用戶名 = 密碼
[users] eg1 = 123456 eg2 = 123456 eg3 = 123456 eg4 = 123456 eg5 = 123456 eg6 = 123456
vim authz
[groups] # 分組 admin = eg1,eg2 guest = eg3,eg4 guset1 = eg5,eg6 [/] # 管理者擁有所有讀寫許可權 @admin = rw * = [project1:/] //項目1的訪問控制,guest1,2無法訪問 @admin = rw 或 eg1 = rw eg2 = rw [project2:/] @guest = rw 或 eg3 = rw eg4 = rw [project3:/] @guest1 = rw 或 eg5 = rw eg6 = rw
三 重啟
svnserve -d -r /home/svnroot
# 停止命令
killall svnserve
四 實際測試
- 各個組成員只能訪問自己的項目,無許可權查看別人的項目
- 只有管理員才能查看所有項目工程