ldap首先我们要知道这个ldap的概念,

LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写

目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。

目录服务是由目录数据库和一套访问协议组成的系统。类似以下的信息适合储存在目录中:

  • 企业员工信息,如姓名、电话、邮箱等;
  • 公用证书和安全密钥;
  • 公司的物理设备信息,如服务器,它的IP地址、存放位置、厂商、购买时间等;

2. LDAP特点

  • LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
  • LDAP可以很快地得到查询结果,不过在写方面,就慢得多
  • LDAP提供了静态数据的快速查询方式
  • Client/server模型,Server 用于存储数据,Client提供操作目录信息树的工具
  • 这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
  • LDAP是一种开放Internet标准,LDAP协议是跨平台的Interent协议

ldap的搭建也是分为单模式配置,或者主从模式的配置,也有主主模式的配置

下面搭建单模式

参考:https://cloud.tencent.com/developer/article/1155424

首先要关闭服务器防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

firewall-cmd --state

OpenLDAP安装

下载ldap:

yum install -y openldap

yum install -y openldap openldap-*

启动: 
systemctl start slapd
systemctl enable slapd

然后选择一个你要存储的配置文件的目录 ,我的习惯是再/opt下

vim installOpenldap.sh

写入:
  #!/bin/bash
  echo "install ldap rpm" 执行:
chmod 755 installOpenldap.sh
sh -x installOpenldap.sh
 

查看安装的ldpa服务:

查看OpenLDAP版本;

查看ldap启动状态

systemctl status slapd
[root@cloud01-ops-tools- ~]# systemctl status slapd
● slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon -- :: CST; 9h ago
Docs: man:slapd
man:slapd-config
man:slapd-hdb
man:slapd-mdb
file:///usr/share/doc/openldap-servers/guide.html
Process: ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=/SUCCESS)
Process: ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=/SUCCESS)
Main PID: (slapd)
Memory: 9.8M
CGroup: /system.slice/slapd.service
└─ /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// Mar :: cloud01-ops-tools- slapd[]: conn= op= SRCH base="c=cn" scope= deref= filter="(objectClass=*)"
Mar :: cloud01-ops-tools- slapd[]: conn= op= SRCH attr=objectclass
Mar :: cloud01-ops-tools- slapd[]: conn= op= SEARCH RESULT tag= err= nentries= text=
Mar :: cloud01-ops-tools- slapd[]: conn= op= SRCH base="ou=People,c=cn" scope= deref= filter="(objectClass=*)"
Mar :: cloud01-ops-tools- slapd[]: conn= op= SRCH attr=objectclass
Mar :: cloud01-ops-tools- slapd[]: conn= op= SEARCH RESULT tag= err= nentries= text=
Mar :: cloud01-ops-tools- slapd[]: conn= op= SRCH base="cn=Manager,c=cn" scope= deref= filter="(objectClass=*)"
Mar :: cloud01-ops-tools- slapd[]: conn= op= SRCH attr=objectclass
Mar :: cloud01-ops-tools- slapd[]: conn= op= SEARCH RESULT tag= err= nentries= text=
Mar :: cloud01-ops-tools- slapd[]: conn= fd= closed (connection lost)

查看openldap默认监听的389端口(centos7最小化安装默认没有netstat命令,需安装)

[root@openldap-master ~]# yum install net-tools -y
[root@openldap-master ~]# netstat -antup| grep
tcp 0.0.0.0: 0.0.0.0:* LISTEN /slapd
tcp6 ::: :::* LISTEN /slapd

温馨提示: 本案例测试时,已关闭了iptables防火墙。如果开启了iptables,则需要开放389端口

[root@openldap-master ~]# firewall-cmd --zone=public --add-port=/tcp --permanent
[root@openldap-master ~]# firewall-cmd --reload
======================================

配置OpenLDAP数据库

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@cloud01-ops-tools- openldap-servers]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@cloud01-ops-tools- openldap-servers]# chown ldap:ldap -R /var/lib/ldap/
[root@cloud01-ops-tools- openldap-servers]# chmod -R /var/lib/ldap
[root@cloud01-ops-tools- openldap-servers]# ll /var/lib/ldap/
total
-rwx------ ldap ldap Mar : alock
-rwx------ ldap ldap Mar : __db.
-rwx------ ldap ldap Mar : __db.
-rwx------ ldap ldap Mar : __db.
-rwx------ ldap ldap Mar : DB_CONFIG
-rwx------ ldap ldap Mar : dn2id.bdb
-rwx------ ldap ldap Mar : id2entry.bdb
-rwx------ ldap ldap Mar : log.

配置ldap服务 设置OpenLDAP的管理员密码(这里密码为:123456)

[root@cloud01-ops-tools- openldap-servers]# slappasswd
New password:
Re-enter new password:
{SSHA}ago8nKNyfjhYa/btKgHDIpyEPxSBZrMm

然后进入你要保存配置文件的目录,我的目录是/opt

编辑chrootpw.ldif文件

vim chrootpw.ldif

[root@openldap-master ~]# cd /opt/
[root@openldap-master opt]# vim chrootpw.ldif
# specify the password generated above for "olcRootPW" section
dn: olcDatabase={}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}ago8nKNyfjhYa/btKgHDIpyEPxSBZrMm # 这里是存放你的上面生成的密码

导入chrootpw.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif

[root@cloud01-ops-tools- opt]# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
modifying entry "olcDatabase={0}config,cn=config"

============================================================= 温馨提示: 如果上面的命令出现下面报错:

[root@openldap-master opt]# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
modifying entry "olcDatabase={0}config,cn=config"
ldap_modify: Inappropriate matching ()
additional info: modify/add: olcRootPW: no equality matching rule

解决办法: 修改modify.ldif中对应选项的"add"为"replace"即可

即:

root@openldap-master opt]# cat chrootpw.ldif
# specify the password generated above for "olcRootPW" section
dn: olcDatabase={}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}ago8nKNyfjhYa/btKgHDIpyEPxSBZrMm

然后再次执行:

[root@openldap-master opt]# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
modifying entry "olcDatabase={0}config,cn=config"

导入基本模式:

 vim ldapaddBaseSchema.sh
[root@openldap-master opt]# vim ldapaddBaseSchema.sh
#!/bin/bash
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

执行上面脚本:

[root@openldap-master opt]# chmod  ldapaddBaseSchema.sh
[root@openldap-master opt]# sh -x ldapaddBaseSchema.sh
+ ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
adding new entry "cn=cosine,cn=schema,cn=config" + ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
adding new entry "cn=nis,cn=schema,cn=config" + ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
adding new entry "cn=inetorgperson,cn=schema,cn=config"

======================================================== 温馨提示: 如果上面的命令出现下面报错:

......
ldap_add: Other (e.g., implementation specific) error ()
additional info: olcAttributeTypes: Duplicate attributeType: "2.16.840.1.113730.3.1.1"

原因是: LDIF已经加载,所以尝试再次加载它们就报错这些信息,忽略这个步骤即可。 =======================================================

接着在ldap服务的DB中设置域名,即编辑chdomain.ldif文件

# replace to your own domain name for "dc=***,dc=***" section
# specify the password generated above for "olcRootPW" section
dn: olcDatabase={}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=Manager,c=cn" read by * none dn: olcDatabase={}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: c=cn dn: olcDatabase={}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,c=cn dn: olcDatabase={}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}ago8nKNyfjhYa/btKgHDIpyEPxSBZrMm # 你上面生成的密码密钥 dn: olcDatabase={}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,c=cn" write by anonymous auth by self write by * none
olcAccess: {}to dn.base="" by * read
olcAccess: {}to * by dn="cn=Manager,c=cn" write by * read

导入chdomain.ldif文件

ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
[root@cloud01-ops-tools- opt]# ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
modifying entry "olcDatabase={1}monitor,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config"

============================================================= 温馨提示: 如果上面的命令出现下面报错: .......

.......
ldap_modify: Inappropriate matching ()
additional info: modify/add: olcRootPW: no equality matching rule

解决办法:将chdomain.ldif文件中的"add"全部替换成"replace",然后重新执行上面命令即可! ============================================================

导入管理员基础数据

vim rootdn.ldif
#vim rootdn.ldif
dn: c=cn
objectclass: country
c: cn dn: cn=Manager,c=cn
objectclass: organizationalRole
cn: Manager

执行下面命令,输入上面设置的密码:123456 (就是输入你上面设置的密码)

[root@openldap-master opt]# ldapadd -x -D cn=Manager,c=cn -W -f rootdn.ldif
Enter LDAP Password:
adding new entry "c=cn" adding new entry "cn=Manager,c=cn"

开启日志配置 查看OpenLDAP的日志级别,日志主要用于对OpenLDAP排查

[root@openldap-master opt]# slapd -d ?
Installed log subsystems: Any (-, 0xffffffff)
Trace (, 0x1)
Packets (, 0x2)
Args (, 0x4)
Conns (, 0x8)
BER (, 0x10)
Filter (, 0x20)
Config (, 0x40)
ACL (, 0x80)
Stats (, 0x100)
Stats2 (, 0x200)
Shell (, 0x400)
Parse (, 0x800)
Sync (, 0x4000)
None (, 0x8000) NOTE: custom log subsystems may be later installed by specific code

编辑logLevel.ldif文件:

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
[root@openldap-master opt]# vim logLevel.ldif
[root@openldap-master opt]# cat logLevel.ldif
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

导入logLevel.ldif

[root@openldap-master opt]# ldapmodify -Y EXTERNAL -H ldapi:/// -f logLevel.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
modifying entry "cn=config"

创建slapd.log文件;

日志文件;

[root@openldap-master opt]# touch /var/log/slapd.log
[root@openldap-master opt]# vim /etc/rsyslog.conf + #"+73"表示指定位到文件73行
.......
local4.* /var/log/slapd.log

重启系统日志服务与ldap服务:

root@openldap-master opt]# systemctl restart rsyslog
[root@openldap-master opt]# systemctl restart slapd
[root@openldap-master opt]# systemctl status slapd [root@openldap-master opt]# tail -f /var/log/slapd.log
May :: openldap-master slapd[]: daemon: shutdown requested and initiated.
May :: openldap-master slapd[]: slapd shutdown: waiting for operations/tasks to finish
May :: openldap-master slapd[]: slapd stopped.
May :: openldap-master slapd[]: @(#) $OpenLDAP: slapd 2.4. (Apr ::) $##011mockbuild@x86-.bsys.centos.org:/builddir/build/BUILD/openldap-2.4./openldap-2.4./servers/slapd
May :: openldap-master slapd[]: slapd starting

然后下载ldapadmin就可以进行连接了

ldapadmin:http://www.ldapadmin.org/download/ldapadmin.html

然后打开你的连接设置

名字就是你的管理员配置的时候设置的:

cn=Manager,c=cn密码就是123456

centos7 安装ldap的更多相关文章

  1. CentOS7安装OpenLDAP+MySQL+PHPLDAPadmin

    安装环境:CentOS 7 1.安装和设置数据库 在CentOS7下,默认安装的数据库为MariaDB,属于MySQL数据库的一个分支,所以我还是使用了MariaDB.安装命令为: [root@loc ...

  2. centos7下ldap+kerberos实现单点登陆

    一. LDAP概念 http://wiki.jabbercn.org/index.php/OpenLDAP2.4%E7%AE%A1%E7%90%86%E5%91%98%E6%8C%87%E5%8D%9 ...

  3. Centos7安装Hive2.3

    准备 1.hadoop已部署(若没有可以参考:Centos7安装Hadoop2.7),集群情况如下: hostname IP地址 部署规划 node1 172.20.0.4 NameNode.Data ...

  4. Centos 7 下安装LDAP 双主同步

    Centos 7 下安装LDAP 双主同步 标签(空格分隔): LDAP 安装说明: 从OpenLDAP2.4.23版本开始所有配置数据都保存在slapd.d目录下的cn=config文件夹中,不再使 ...

  5. HP服务器 hp 360g5 centos7安装问题

    HP服务器  hp 360g5 centos7安装问题 一 :启动盘无法识别硬盘 1.进入安装光盘,用上下键选择安装centos--Install Centos7(注意不可按Enter键),如图: 2 ...

  6. CentOS7 安装Mono及Jexus

    CentOS7安装Mono及Juxes 1 安装Mono 1.1 安装yum-utils 因为安装要用到yum-config-manager,默认是没有安装的,所以要先安装yum-utils包.命令如 ...

  7. CentOS7安装mysql提示“No package mysql-server available.”

    针对centos7安装mysql,提示"No package mysql-server available."错误,解决方法如下: Centos 7 comes with Mari ...

  8. CentOS7安装Oracle 11gR2 安装

    概述 Oracle 在Linux和window上的安装不太一样,公司又是Linux系统上的Oracle,实在没辙,研究下Linux下Oracle的使用,oracle默认不支持CentOS系统安装,所以 ...

  9. Centos7安装完毕后重启提示Initial setup of CentOS Linux 7 (core)的解决方法

    问题: CentOS7安装完毕,重新开机启动后显示: Initial setup of CentOS Linux 7 (core) 1) [x] Creat user 2) [!] License i ...

随机推荐

  1. C++关于sort和priority_queue的运算符重载

    C++中的sort函数默认是将元素升序排列的,而priority_queue默认是将元素降序排列的(默认实现的是大顶堆). 自定义运算符用的比较多,以下2种对sort和priority_queue运算 ...

  2. windows7(64位) PHP APACHE MYSQL

    - 一.安装软件准备软件版本以本人安装为例,其他版本同理,软件到各官网下载      1.Apache(httpd-2.2.19-win64)      2.PHP(php-5.3.6-Win32-V ...

  3. 基于Hadoop2.6.5(HA)的Hive1.2.1的MySQL方式配置

    1.Hive配置MySQL Hive只是一个工具,无需配置多台机器,我在CentOS7One机器上配置Hive /usr/local/hive/apache-hive-1.2.1-bin/conf c ...

  4. 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)

    高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图api更新得太快,官网上最新的包使用起来没有之前的方便,所以以下提供最全面的原始包) 链接:http://pan.baidu.com/s/1 ...

  5. angularjs学习第一天笔记

    您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点 ...

  6. [日常] Go语言圣经--浮点数习题

    练习 3.1: 如果f函数返回的是无限制的float64值,那么SVG文件可能输出无效的多边形元素(虽然许多SVG渲染器会妥善处理这类问题).修改程序跳过无效的多边形. 练习 3.2: 试验math包 ...

  7. Java - LinkedList源码分析

    java提高篇(二二)---LinkedList 一.概述 LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList ...

  8. Java - TreeMap源码解析 + 红黑树

    Java提高篇(二七)-----TreeMap TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap ...

  9. SpringBoot+Mybatis+PageHelper实现分页

    SpringBoot+Mybatis+PageHelper实现分页 mybatis自己没有分页功能,我们可以通过PageHelper工具来实现分页,非常简单方便 第一步:添加依赖 <depend ...

  10. Linux常用基本命令(head)

    head命令 作用:显示文件的头部内容,默认显示前面10行 格式: head [option] [file] -n <行数> -c <字节> ghostwu@dev:~/lin ...