柴少鹏的官方网站 技术在分享中进步,水平在学习中升华

Centos6.4 svn+openldap

一、svn+apache+openldap

  1. 安装软件

# 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登录测试

blob.png

blob.png

#测试结果可创建,可提交,这些都不是主要的,这里的测试是为后面做准备,首先保证了我们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测试:

blob.pngblob.png

blob.png

从上面的结果可以看出,svntest用户的上传也是OK的。

作者:忙碌的柴少 分类:ldap 浏览:2872 评论:0
留言列表
发表评论
来宾的头像