重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

ldap+phpldapadmin+svn-创新互联

1、 首先,需要安装配置openldap:

站在用户的角度思考问题,与客户深入沟通,找到乐陵网站设计与乐陵网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名与空间、网络空间、企业邮箱。业务覆盖乐陵地区。

yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap

cp  /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

在/openldap目录下只保留slapd.conf cert schem slapd.d 4个文件

cd /etc/openldap

创建管理员密码:

[root@ylkj openldap]# slappasswd

New password:

Re-enter new password:

{SSHA}cM5gJrd3iDG2p13B+f1gpFGH3pFP6hWh(这个复制到配置文件slapd.conf中)

vim slapd.conf

修改一下配置:

suffix      "dc=my-domain,dc=com"

checkpoint    1024 15

rootdn      "cn=Manager,dc=my-domain,dc=com"

改为

suffix      "dc=www,dc=example,dc=com"

checkpoint    1024 15

rootdn      "cn=Manager,dc=www,dc=example,dc=com"

rootpw {SSHA}cM5gJrd3iDG2p13B+f1gpFGH3pFP6hWh

完成,检查配置文件

[root@ylkj openldap]# slaptest -f slapd.conf

56e182f3 bdb_db_open: warning - no DB_CONFIG file found in directory /var/lib/ldap: (2).(看这里,显示DB_CONFIG没找到 )

Expect poor performance for suffix "dc=my-domain,dc=com".

56e182f3 bdb_db_open: database "dc=my-domain,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).

56e182f3 backend_startup_one (type=bdb, suffix="dc=my-domain,dc=com"): bi_db_open failed! (2)

slap_startup failed (test would succeed using the -u switch)

解决方法: cp /usr/share/openldap-servers/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG

同时修改 /var/lib/ldap/的权限,待会ldap启动时会在下面生成一些文件,不然报错

chown -R ldap.ldap /var/lib/ldap

继续检查配置文件

[root@ylkj openldap]# slaptest -f slapd.conf

56e183c1 bdb_db_open: database "dc=my-domain,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).

56e183c1 backend_startup_one (type=bdb, suffix="dc=my-domain,dc=com"): bi_db_open failed! (2)(这个文件需要登slapd启动时,才会生成 所以现在没有 不用管)

slap_startup failed (test would succeed using the -u switch)(这个文件需要登slapd启动时,才会生成 所以现在没有 不用管)

当然也可以用加上-u查看 是没错的

[root@ylkj openldap]# slaptest -f slapd.conf  -u

config file testing succeeded

删掉slapd.d下的文件,重新生成 不然待会启动时会报错

rm -rf  slapd.d/* ,

不能把slapd.d 这个目录给删了,否则进行下面一步时也会出错

[root@ylkj openldap]# slaptest -f slapd.conf  -F slapd.d -u

config file testing succeeded

同时修改slapd.d的属主

chown -R ldap.ldap slapd.d

接下来启动slapd, 哈哈 不容易啊

[root@ylkj openldap]# service slapd start

Starting slapd:                       [  OK  ]

接下来我们需要创建用户并把用户导入到ldap里面去

useradd user1;useradd user2;useradd user3

同时给用户创建密码(不要忘了这步,不然弄好也是白忙活)

echo “密码”| passwd --stdin user1

echo “密码”| passwd --stdin user2

echo “密码”| passwd --stdin user3

安装及配置迁移工具

[root@openldap-master openldap]# yum install migrationtools -y

[root@openldap-master openldap]# cd /usr/share/migrationtools/

[root@openldap-master migrationtools]# vi migrate_common.ph

   70 # Default DNS domain

   71 $DEFAULT_MAIL_DOMAIN = "www.example.com";

   72

   73 # Default base

   74 $DEFAULT_BASE = "dc=www,dc=example,dc=com";

主要的概念:

dn:唯一区分名

dc:所属区域

ou:所属组织

cn/uid:全名/登录ID

运行脚本migrate_base.pl,它会创建根项,并为 Hosts、Networks、Group和 People 等创建低一级的组织单元,指定为base.ldif文件,这里我们只有下面这3个

[root@openldap-master migrationtools]# ./migrate_base.pl >base.ldif

[root@openldap-master migrationtools]#cat base.ldif  (你可以看一下这个文件的生成内容)

接下来创建用户和组的数据库文件

[root@openldap-master migrationtools]# grep ^user /etc/passwd >user

[root@openldap-master migrationtools]# ./migrate_passwd.pl user ./user.ldif

[root@openldap-master migrationtools]# grep ^user /etc/group >group

[root@openldap-master migrationtools]# ./migrate_group.pl group ./group.ldif

[root@openldap-master migrationtools]# ll base.ldif user.ldif group.ldif

迁移系统用户到ldap数据库

ldapadd -D "cn=Manager,dc=www,dc=example,dc=com" -W -x -f /usr/share/migrationtools/base.ldif

Enter LDAP Password:

adding new entry "dc=www,dc=example,dc=com"

adding new entry "ou=People,dc=www,dc=example,dc=com"

adding new entry "ou=Group,dc=www,dc=example,dc=com"

ldapadd -D "cn=Manager,dc=www,dc=example,dc=com" -W -x -f /usr/share/migrationtools/user.ldif

Enter LDAP Password:

adding new entry "uid=user1,ou=People,dc=www,dc=example,dc=com"

adding new entry "uid=user2,ou=People,dc=www,dc=example,dc=com"

adding new entry "uid=user3,ou=People,dc=www,dc=example,dc=com"

ldapadd -D "cn=Manager,dc=www,dc=example,dc=com" -W -x -f /usr/share/migrationtools/group.ldif

Enter LDAP Password:

adding new entry "cn=user1,ou=People,dc=www,dc=example,dc=com"

adding new entry "cn=user2,ou=People,dc=www,dc=example,dc=com"

adding new entry "cn=user3,ou=People,dc=www,dc=example,dc=com"

如果出现错误:

ldap_bind: Invalid credentials (49)

就表示你要么给出了错误的”cn=”条目,要么给出了错误的密码

Enter LDAP Password:(输入你刚才设置的密码),正确之后会显示:

查看导入的用户: ldapsearch  -x -b  "dc=www,dc=example,dc=com"

记下这个 dn 的内容

# user1, People(请注意这,不是group,不要弄错了), www.ulink.com

dn: uid=user1,ou=People,dc=www,dc=ulink,dc=com

接下来在web页面添加用户,其实现在可以把之前在服务器添加的用户给删掉(安全起见)图二输入密码和账号为空,不能输

dn 输入刚才记下的

下面的请按我的设置一样的,我尝试改了个,出错了(导致我重弄了5,6遍)

phpldapadmin安装

yum安装apache+php环境

yum install httpd php php-bcmath php-gd php-mbstring php-xml php-ldap

yum安装phpldapadmin

yum install phpldapadmin  #要有epel源

修改配置文件,增加

vi /etc/httpd/conf/httpd.conf

ServerName www.ulink.com

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs

Alias /ldapadmin /usr/share/phpldapadmin/htdocs

 Order Deny,Allow

 Deny from all

 Allow from 127.0.0.1 192.168.10.0/24

 Allow from ::1

修改phpldapadmin配置文件

1

2

3

4 [root@openldap-master ~]# vi /etc/phpldapadmin/config.php

# line 397: uncomment, line 398: make it comment

$servers->setValue('login','attr','dn');

// $servers->setValue('login','attr','uid');

输入ip或域名/ldapadmin进行访问,填上ldap管理员的密码,然后在里面添加用户即可,要想用户生效,还需去redmine的ldap用户认证下去配置

检查已安装版本

#检查是否安装了低版本的SVN

[root@localhost /]# rpm -qa subversion

#卸载旧版本SVN

[root@localhost modules]# yum remove subversion

安装SVN

[root@localhost modules]# yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql

确认已安装了svn模块

[root@localhost /]# cd /etc/httpd/modules

[root@localhost modules]# ls | grep svn

mod_authz_svn.so

mod_dav_svn.so

验证安装

检验已经安装的SVN版本信息

[root@localhost modules]# svnserve --version

svnserve,版本 1.6.11 (r934486)

代码库创建

SVN软件安装完成后还需要建立SVN库

[root@localhost modules]# mkdir -p /home/user/svn/project1

[root@localhost modules]# svnadmin create /home/user/svn/project1

执行上面的命令后,自动建立project库,查看文件夹/home/user/svn/project1发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。

配置代码库

进入上面生成的文件夹conf下,进行配置

[root@localhost modules]# cd /home/user/svn/project1/conf

用户密码passwd配置

[root@localhost password]# cd /home/user/svn/project1/conf

[root@admin conf]# vi  passwd

修改passwd为以下内容:

[users]

# harry = harryssecret

# sally = sallyssecret

hw=123456

权限控制authz配置

[root@admin conf]# vi  authz

目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:

#设置[/]代表根目录下所有的资源

[/]

hw=rw

服务svnserve.conf配置

[root@admin conf]# vi  svnserve.conf

追加以下内容:

[general]

#匿名访问的权限,可以是read,write,none,默认为read

anon-access=none

#使授权用户有写权限

auth-access=write

#密码数据库的路径

password-db=passwd

#访问控制文件

authz-db=authz

#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字

realm=/home/user/svn/

配置防火墙端口

[root@localhost conf]# vi /etc/sysconfig/iptables

添加以下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT

保存后重启防火墙

[root@localhost conf]# service iptables restart

启动SVN

svnserve -d -r /home/user/svn/

测试

SVN服务已经启动,使用客户端测试连接。

客户端连接地址:svn://192.168.10.254

用户名/密码: hw/123456

测试创建文件夹等操作。

我们现在结合svn+ldap

在svn目录下,创建多个项目

# svnadmin create project2

# svnadmin create project3

# svnadmin create project4

# svnadmin create project5

# ls

project1  project2  project3  project4  project5

# 创建authz.conf文件,作为工程权限控制的配置文件。(配置语法请参考:http://svnbook.red-bean.com/en/1.5/svn.serverconfig.pathbasedauthz.html)

# vi authz.conf

Authz.conf代码

1. [groups]

2. admin=hw

3.

4. [/]

5. @admin=rw

6. *=

7. #*=r

8.

9.

10. [project1:/]

11. hw=r

完成以上后,待用,后续使用apache整合。

现在针对apache,做配置

编辑httpd.conf,加入

#这里如果写成/svn,访问时报错

Forbidden

You don't have permission to access /svn/ on this server.

     DAV svn

     SVNListParentPath on

     SVNParentPath /home/user/svn/

#     AuthUserfile /home/user/svn/conf/passwd

     AuthzSVNAccessFile /home/user/svn/authz.conf

    # 在ldap找不到账号的情况下可以使用其它的认证方式(如,密码文件)

    AuthzLDAPAuthoritative off

    # openLDAP的管理账户

    AuthLDAPBindDN "cn=Manager,dc=www,dc=ulink,dc=com"

    AuthLDAPBindPassword ******(ldap的管理员密码)

     AuthBasicProvider ldap

     # 认证数据来源:"ou=rd,dc=cq,dc=feinno,dc=com" 下所有子entity的uid作为认证用户名

     AuthLDAPURL "ldap://192.168.10.254:389/ou=People,dc=www,dc=ulink,dc=com?uid?sub?(objectClass=*)"

#这个uid如果写成cn,访问 ip/svn/ 时会弹出一个验证界面,不断验证 不能成功

     # http 基本认证

     AuthType Basic

     AuthName "ok"

     Require valid-user

     # 设置目录权限,实现列表所有工程目录

     Options Indexes FollowSymLinks

     Order allow,deny

     Allow from all

  

还有一个问题就是不能直接在svn目录下生成库文件,否则在ldap认证时会报错

[Wed Mar 16 18:02:55 2016] [error] [client 192.168.10.200] (20014)Internal error: Can't open file '/home/user/svn/project1/format': No such file or directory, referer: http://192.168.10.254/svn/

[Wed Mar 16 18:02:55 2016] [error] [client 192.168.10.200] Could not fetch resource information.  [500, #0], referer: http://192.168.10.254/svn/

我所碰到的就是这三个问题(记得查看下httpd的错误日志,很有用),另外网页上访问时是这样的 ip/svn/,输入你的ldap账号和密码就行了

效果图,注意一下网页缓存

ldap用户自己更改密码

openldap 2.4 版本 系统认证无法更改密码,错误提示:

   openldap: LDAP password information update failed: Insufficient access

tail /var/log/securce

  passwd: pam_unix(passwd:chauthtok): user "test" does not exist in /etc/passwd

解决方案:

  在 sldap.conf 中加入:

access to attrs=userPassword

    by self write

    by anonymous auth

    by dn.base="cn=Manager,dc=www,dc=ulink,dc=com" write

    by * none

access to *

    by self write

    by dn.base="cn=Manager,dc=www,dc=ulink,dc=com" write

    by * read

上面行最主要的加在database config 前面,否则不生效。

然后执行

rm -rf /etc/openldap/slapd.d/*

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

chown -R ldap:ldap /etc/openldap/slapd.d

service slapd restart

编辑配置文件 vim /etc/phpldapadmin/config.php

这里设为dn登录方式,如果设成了uid登录方式,用户可以改密码,但是ldap管理员登录不了

这样虽然能登陆,但是改密码会报错(可以改得了密码)

正确方式:

如果要重新导入用户需要删除/var/lib/ldap下的除了DB_CONFIG 下的所有文件在把

Sldap.d下的所有文件删除 之后重新导入三个ldif (user.ldif,basc.ldif,group.ldif)

重新生成sldap.d下的文件slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

之后重新启动sqlap文件

重新导入的用户生效

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:ldap+phpldapadmin+svn-创新互联
网站URL:http://cqcxhl.com/article/dppioo.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP