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

创建管理员密码:

[[email protected] 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

完成,检查配置文件

[[email protected] 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

继续检查配置文件

[[email protected] 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查看 是没错的

[[email protected] openldap]# slaptest -f slapd.conf  -u

config file testing succeeded

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

rm -rf  slapd.d/* ,

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

[[email protected] openldap]# slaptest -f slapd.conf  -F slapd.d -u

config file testing succeeded

同时修改slapd.d的属主

chown -R ldap.ldap slapd.d

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

[[email protected] 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

安装及配置迁移工具

[[email protected] openldap]# yum install migrationtools -y

[[email protected] openldap]# cd /usr/share/migrationtools/

[[email protected] 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个

[[email protected] migrationtools]# ./migrate_base.pl >base.ldif

[[email protected] migrationtools]#cat base.ldif  (你可以看一下这个文件的生成内容)

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

[[email protected] migrationtools]# grep ^user /etc/passwd >user

[[email protected] migrationtools]# ./migrate_passwd.pl user ./user.ldif

[[email protected] migrationtools]# grep ^user /etc/group >group

[[email protected] migrationtools]# ./migrate_group.pl group ./group.ldif

[[email protected] 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

<Directory /usr/share/phpldapadmin/htdocs>

Order Deny,Allow

Deny from all

Allow from 127.0.0.1 192.168.10.0/24

Allow from ::1

</Directory>

修改phpldapadmin配置文件

1

2

3

4 [[email protected] ~]# 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

[[email protected] /]# rpm -qa subversion

#卸载旧版本SVN

[[email protected] modules]# yum remove subversion

安装SVN

[[email protected] modules]# yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql

确认已安装了svn模块

[[email protected] /]# cd /etc/httpd/modules

[[email protected] modules]# ls | grep svn

mod_authz_svn.so

mod_dav_svn.so

验证安装

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

[[email protected] modules]# svnserve --version

svnserve,版本 1.6.11 (r934486)

代码库创建

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

[[email protected] modules]# mkdir -p /home/user/svn/project1

[[email protected] modules]# svnadmin create /home/user/svn/project1

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

配置代码库

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

[[email protected] modules]# cd /home/user/svn/project1/conf

用户密码passwd配置

[[email protected] password]# cd /home/user/svn/project1/conf

[[email protected] conf]# vi   passwd

修改passwd为以下内容:

[users]

# harry = harryssecret

# sally = sallyssecret

hw=123456

权限控制authz配置

[[email protected] conf]# vi   authz

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

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

[/]

hw=rw

服务svnserve.conf配置

[[email protected] 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/

配置防火墙端口

[[email protected] conf]# vi /etc/sysconfig/iptables

添加以下内容:

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

保存后重启防火墙

[[email protected] 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.

<Location /svn/>

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

</Location>

还有一个问题就是不能直接在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文件

重新导入的用户生效

时间: 2024-08-09 21:53:43

ldap+phpldapadmin+svn的相关文章

ldap第二天-yum安装LDAP + phpLDAPadmin

1.安装LDAP服务器和客户端,migrationtools工具包 yum install -y openldap-servers openldap-clients migrationtools 2.设置openldap管理员密码 slappasswdNew password: 123456 Re-enter new password: 123456 会返回加密的密码字符串,保存好这个字符串 {SSHA}GPEzYwuXyEjXetnjC7uKXydXoERcF3HB 3.更改openldap配

ldap+ldap-account-manager+svn+apache+php做账号管理

Centos6配置ldap 设备基本信息: 1.系统基本信息 cat /etc/redhat-release CentOS release 6.6 (Final) uname -a Linux master 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 2.软件版本基本信息,软件都是yum安装的 一.基础配置 1.关闭防火墙 iptables -F /etc/ini

ldap sudo权限

openldap默认情况下无法在phpldapadmin中设置用户的sudo权限,但可以通过以下设置,来实现 LDAP SERVER端: 安装openssh-ldap yum -y install openssh-ldap 拷贝schema文件 cp /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema cp /usr/share/doc/openssh-ldap-5.3p1/openssh-lp

Linux系统下安装配置 OpenLDAP + phpLDAPadmin

实验环境: 操作系统:Centos 7.4 服务器ip:192.168.3.41 运行用户:root 网络环境:Internet LDAP(轻量级目录访问协议)是一个能实现提供被称为目录服务的信息服务,也是一套用户认证体系系统:一般在大型企业.学校.政府单位使用的比较多,LDAP是由4部分组成,这4部分分别是slapd(独立LDAP守护进程).slurpd(独立的LDAP更新复制守护进程).LDAP协议库.工具软件和示例客户端(phpLDAPadmin),目录服务是一种特殊的数据库系统,用来存储

SVN服务器集群(基于LDAP)

SVN服务器操作手册 1. svn服务器整体架构 1.1 svn服务器分类和作用 svn主服务器:下发svn区域服务器的权限文件和配置文件. svn备份服务器:提供数据备份,如果出现源主机宕机,更改备机IP为源主机IP后,还可备份svn区域服务器上的库. 南京svn服务器:提供区域svn服务. 武汉的svn服务器:提供区域svn服务. 1.2 svn服务器的目录结构 svn主服务器: svn备份服务器: svn南京服务器: svn武汉服务器: 1.3 svn服务器联系图 2. svn服务下载和创

centos7下利用httpd2.4配置svn并使用Ldap用户认证

应用场景:Windows下有AD活动目录,类Unix系统下有Ldap,在运维开发工具平台逐步丰富的现在,统一用户管理大大便捷了管理人员. 其中不乏经典版本控制管理工具svn,与Ldap组合的用户认证方式. 测试环境: 配置步骤: 1. 安装相关软件  ~]# yum install httpd subversion mod_dav_svn mod_ldap 注:在CentOS7或RHEL7中,httpd版本为2.4:而且不在有mod_authz_ldap,该模块软件功能都已经整合到mod_lda

SVN使用LDAP认证

完成了openldap的配置之后,为了更进一步的进行用户统一身份认证,所以需要配置SVN使用openldap进行认证,这样的话只需要维护ldap中的用户数据,然后在SVN上进行服务授权即可完成SVN的用户权限分配.同样的,这个配置也适合于其他的软件,比如vsftpd,ssh,openvpn等,下面开始配置SVN使用ldap认证. 1.安装sasl SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制. SASL是一个

LDAP环境搭建 OpenLDAP和phpLDAPadmin -- yum版

  前言: 前两天公司要求做一个使用LDAP和Kerberos做一个认证授权系统,然后开始学习LDAP相关知识,期间找了不少博客按照步骤来安装,可是很多博客在配置的时候,都会遇到安装过程中一两个问题卡住了,然后就无法进行下去了,坑了我不少时间,其实我只是想先搭建好环境然后来深入浅出的学习,总结这两天的坑,便有了这篇博文,本次主要是快速上手篇,大部分会采用yum方式安装 力求快速上手,尽量少修改官方配置 最小化的环境,为了详细,文章中图片可能会多一点 正式使用还是要基于源码安装,如果你喜欢源码安装

apache+svn+ldap集成

apache+svn搭建方式如下:http://www.cnblogs.com/uglyliu/p/6914056.html SVN和ldap集成,我用的方式只需要更改 /etc/http/conf.d/subversion.conf 配置如下: <Location /svn/> DAV svn SVNListParentPath on SVNParentPath /home/svndata AuthBasicAuthoritative on AuthType Basic AuthName &