根據客戶需求現在需要把SVN的訪問方式由原來的svn+ssh的方式變爲單獨的svn的方式,但是在切換的過程中遇到了幾個問題,先做一個歸納。
關於如何在linux下搭建這兩種方式的svn server,可以具體參考博文“Centos 下面搭建svn 服務”來搭建,
首先明確兩種方式的訪問原理,
svn:讀取倉庫下面的配置文件來達到成功訪問
svn+ssh:利用linux用戶,將其加入到svn組以達到成功訪問
問題一:配好了svn訪問方式之後,提示svn server拒絕訪問,
1,檢查svn server是否啓動 (svnserver -d -r your-repository)
2,配置svn server的時候,在配置文件svnserver.conf裏面可以註銷authz-db參數
3, 由於svn+ssh方式走的不是svn默認的端口,按svn方式訪問的時候需要配置防火牆添加svn默認端口號3690
問題二:配好了svn訪問方式之後,舊的svn+ssh的方式還可以訪問:
1,確保將linux用戶從svn組中剔除(gpasswd -d user group [gpasswd -a user group是將用戶user加入group組])
在剔除之後去測試舊的svn+ssh的方式,居然還能正常訪問,後來新增一個svn 測試賬號(當然此處測試賬號還是linux賬號)在加入svn和沒有加入svn組的情況下分別測試,顯示是符合實際要求的,問題可能出在當前我使用的賬號上面。
經過查找發現是因爲當前賬號james.liu對svn repository有ACL權限導致
2,檢查svn repository的ACL 權限,看是否有linux賬號對其有ACL權限
1 2 3 4 5 6 7 8 | ...... # owner: svn # group: svn user::rwx user:james.liu:rwx group::rwx mask::rwx other::r-x |
刪除用戶james.liu的ACL權限
setfacl -R -x u:james.liu svn-repository-path
最後發現並解決所有問題,一切達到預期效果