Centos6.4 svn+openldap
一、svn+apache+openldap
安装软件
# yum install httpd httpd-devel mod_dav_svn subversion mod_ssl -y
# ls /etc/httpd/modules/ | grep svn #查看svn模块是否安装成功
mod_authz_svn.so
mod_dav_svn.so
# svn --version #查看svn的版本
svn, version 1.6.11 (r934486)
2. 配置svn
# mkdir -p /data/svn -p
# svnadmin create /data/svn/
# chown -R apache:apache /data/svn
# ls -l /etc/httpd/modules/{mod_authz_svn.so,mod_dav_svn.so} #查看着两个模块是否存在
# vi /etc/httpd/conf/httpd.conf #如果配置文件少两个加载模块,加入下面两行
LoadModule version_module modules/mod_authz_svn.so
LoadModule version_module modules/mod_dav_svn.so
# vi /etc/httpd/conf/httpd.conf #在httpd文件加入下面的语句
<Location /svn>
DAV svn
SVNPath /data/svn
SVNListParentPath on
AuthType Basic
AuthName "svn server"
AuthUserFile /data/passwdfile
AuthzSVNAccessFile /data/accessfile
Require valid-user
</Location>
#htpasswd -c /data/passwdfile 51niux #设置一个51niux的用户
#htpasswd /data/passwdfile 51niux1 #再创建一个51niux1的用户
# /etc/init.d/httpd #启动httpd服务
# vi /data/svn/accessfile #创建权限访问控制文件,将下面的简单权限写入文件。
[/]
51niux = r
51niux1 = rw
# svnserve -d /data/svn #启动svn服务
博文来自:www.51niux.com
3.svn登录测试
#测试结果可创建,可提交,这些都不是主要的,这里的测试是为后面做准备,首先保证了我们svn服务器是没问题的。
下面让我们再次更改httpd.conf的配置文件。
# cat /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerName svn.51niux.com
Loglevel warn
<Location /svn>
DAV svn
SVNPath /data/svn #配置版本库根目录位置
order allow,deny #先匹配禁止的用户
allow from all #让没有禁止的用户通行
Options Indexes #设定目录下面没有index.html的时候显示目录
AuthType Basic #访问类型是基本验证,用户名/密码
AuthName "svn server" #输入用户和密码框中显示的内容
AuthBasicProvider ldap #采用ldap认证
AuthzLDAPAuthoritative on #打开权限继承,默认是“开”。如果你要求验证的用户必须为LDAP用户,就设置此项为“ON".
AuthLDAPURL "ldap://192.168.1.108:389/ou=People,dc=51niux,dc=com?uid?sub?(objectClass=*)" #认证数据来源:"ou=People.dc=51niux,dc=com"下所有子entity的uid作为认证用户名
AuthLDAPBindDN "cn=Manager,dc=51niux,dc=com" #输入域的账户
AuthLDAPBindPassword "123456" #相对应的密码
AuthzSVNAccessFile /data/accessfile
Require valid-user #允许经过验证的所有用户都可以访问
</Location>
</VirtualHost>
下面让我们看下测试结果,这里在linux客户端执行:
# svn co http://192.168.1.108/svn/ /opt/svn/ --username=svntest --password=123456 #从下面的执行结果看,测试成功
-----------------------------------------------------------------------
注意! 你的密码,对于认证域:
<http://192.168.1.108:80> svn server
只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
A /opt/svn/aa
A /opt/svn/haha
A /opt/svn/haha/123.txt
A /opt/svn/nihao
A /opt/svn/nihao/zouqi.txt
取出版本 3。
博文来自:www.51niux.com
二、svn+sasl通过ldap进行身份认证
上面讲的是web-svn方式的ldap认证,如果我们的svn是传统的svn独立服务的形式呢?客官继续看!
1. 安装并配置sasl服务
# yum install *sasl* -y #安装sasl
# saslauthd -v #查看sasl的认证机制,我们可以看到支持ldap
saslauthd 2.1.23
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
# sed -i 's#MECH=pam#MECH=shadow#g' /etc/sysconfig/saslauthd #先将认证方式改为shadow方式测试一下
# /etc/init.d/saslauthd restart #重启服务
# ps aux |grep sasl #可以查看服务是否启动
# testsaslauthd -uroot -p123456 #下面的OK就表示本地用户认证的方式测试成功了
0: OK "Success."
# sed -i 's#MECH=shadow#MECH=ldap#g' /etc/sysconfig/saslauthd #现在将认证方式改为ldap
# /etc/init.d/saslauthd restart
# vi /etc/saslauthd.conf #创建sasl认证配置文件
ldap_servers: ldap://192.168.1.108/
ldap_bind_dn: cn=Manager,dc=51niux,dc=com
ldap_bind_pw: 123456
ldap_search_base: ou=People,dc=51niux,dc=com
ldap_filter: uid=%U
ldap_password_attr: userPassword
# id svntest #这个用户就是我们的测试用户了啊,系统中是没有的,我在ldap里面添加一下
id: svntest: No such user
# ldapsearch -LLL -w 123456 -x -H ldap://192.168.1.108 -D "cn=Manager,dc=51niux,dc=com" -b "dc=51niux,dc=com" "(uid=svntest)" #查询一下我们的ldap中是否有svntest这个用户,下面的结果可以看出有svntest这个用户
dn: uid=svntest,ou=People,dc=51niux,dc=com
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
homeDirectory: /home/svntest
loginShell: /bin/bash
uid: svntest
cn: svn test
uidNumber: 10001
gidNumber: 2534
userPassword:: e1NTSEF9RGxwRUtIZUpuVEE2UXBpME1YMm5xVkpGSFNPQWxKVWc=
sn: test
givenName: svn
# testsaslauthd -usvntest -p123456 #通过下面的结果看出测试也是成功的。
0: OK "Success."
博文来自:www.51niux.com
2.配置svn
#我还是承接上面的svn库和服务了啊,安装软件,创建svn库就不写了,直接进入到如何配置svn支持ldap了。
# vim /etc/sasl2/svn.conf #创建认证配置文件
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
# /etc/init.d/saslauthd restart #重启服务
# egrep -v "^#|^$" /data/svn/conf/svnserve.conf #这是svn更改后的配置文件
[general] #svn的配置我就用最简单的了,就不指定额外的目录之类的了。
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
[sasl] #主要是下面那一句话,开启认证
use-sasl = true #开启认证
# kill -9 `ps -ef|grep svn|head -1|awk {'print $2'}` #关闭svn服务
# svnserve -d -r /data/svn/ #重启svn服务
# egrep -v "^$|^#" /data/svn/conf/authz #svn的authz文件我们也是做个简单设置,svntest自己一个admin组拥有读写权限
[aliases]
[groups]
admin = svntest
[/]
@admin = rw
ldaptest1 = r
上面就是配置部分了,下面让我们测试一下。
现在linux机器上面测试一下ldaptest1用户。
# svn co svn://192.168.1.108/ /tmp/svn/ --username=ldaptest1 --password=123456 #从下面的结果可以看出是成功的
-----------------------------------------------------------------------
注意! 你的密码,对于认证域:
<svn://192.168.1.108:3690> My First Repository
只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
A /tmp/svn/aa
A /tmp/svn/haha
A /tmp/svn/haha/123.txt
下面让我们进行一下windows下的svntest测试:
从上面的结果可以看出,svntest用户的上传也是OK的。