安裝環境
- 系統版本:Centos7.9
- 安裝方式: yum 安裝
部署SVN
- 安裝svn
yum -y install subversion
- 檢查版本
svnserve --version
配置SVN
- 創建SVN庫
mkdir -p /opt/svn
- 創建repo代碼庫
svnadmin create /opt/svn/repo
- 創建完成后,生成以下文件
cd /opt/svn/repo
- svn 配置文件修改,修改以下參數
vim /opt/svn/repo/conf/svnserve.conf
[general]
anon-access = none #匿名訪問的權限,可以是read,write,none,默認為read
auth-access = write #使授權用戶有寫權限
password-db = passwd #密碼數據庫的路徑
authz-db = authz #訪問控制文件
realm = repo #認證命名空間,subversion會在認證提示里顯示,並且作為憑證緩存的關鍵字
截圖如下:
- 啟動svn
svnserve -d -r /opt/svn/ --listen-port=3690 --log-file /tmp/svn.log &
- 查看svn 進程
至此,svn 部署完成,開始對接ldap!
svn對接ldap
配置sasl
- sasl 說明
SASL全稱Simple Authentication and Security Layer,是一種用來擴充C/S模式驗證能力的機制。
SASL是一個膠合庫,通過這個庫把應用層與形式多樣的認證系統整合在一起。這有點類似於PAM,但是后者是認證方式,決定什么人可以訪問什么服務,而SASL是認證過程,側重於信任建立過程,這個過程可以調用PAM來建立信任關系。在這里Memcached就是上面提到的應用層,具體的認證交給SASL庫,SASL會根據相應的認證機制來完成驗證功能。
- 安裝sasl
yum -y install *sasl*
- 修改認證方式
vim /etc/sysconfig/saslauthd
將MECH=pam 修改成MECH=ldap
- 創建/etc/saslauthd.conf 文件,寫入以下內容
vim /etc/saslauthd.conf
ldap_servers: ldap://xxx.xxx.cn:389/
ldap_bind_dn: cn=admin,dc=xxx,dc=cn
ldap_bind_pw: xxxxx
ldap_search_base: dc=xxx,dc=cn
ldap_filter: uid=%U
ldap_password_attr: userPassword
- 創建/etc/sasl2/svn.conf文件,寫入以下內容
vim /etc/sasl2/svn.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
- 重啟saslauthd服務
systemctl restart saslauthd
注: 如果是docker 啟動,需要另一種方式啟動
/usr/sbin/saslauthd -m /run/saslauthd -a ldap
測試ldap認證是否配置成功,xioali是ldap用戶名,123是密碼。可以看到ldap配置沒有問題
testsaslauthd -uxiaoli -p123
0: OK "Success."
- 修改SVN svnserve.conf 配置文件
我的SVN倉庫地址為/opt/svn/repo,所以服務器配置文件路徑為/opt/svn/repo/conf/svnserve.conf
啟用如下配置
vim /opt/svn/repo/conf/svnserve.conf
use-sasl = true
注意:使用LDAP認證后,passwd就不再生效了。但是賬戶權限還是需要在authz中設置。LDAP Server只是驗證用戶在ldap server上是否存在,但不進行權限限制
- 修改完svn 配置后需要重啟svn
1. 殺死svn 進程號
2.啟動svn
svnserve -d -r /opt/svn/ --listen-port=3690 --log-file /tmp/svn.log &
- 在authz 中增加用戶權限
cat /opt/svn/repo/conf/authz
[groups]
repo = li.xinliang,zhao.bb
rrepo = li.aa
[repo:/]
@repo = rw
@rrepo = r
上述權限表面 li.xinliang,zhao.bb 擁有 rw 讀寫權限;li.aa 用戶擁有只讀 r 權限
- 驗證
下載svn 客戶端,打開客戶端並輸入 svn://10.65.0.11:3690/repo
輸入ldap 賬號: li.xinliang
輸入ldap 密碼:xxxx
結論:li.xinliang,zhao.bb 擁有 rw 讀寫權限,可以checkout、update、提交代碼
li.aa 只能update,查看內容,不能提交代碼
至此,SVN 對接Ldap 完成!