安装openldap:yum install openldap* -y

1、修改/etc/openldap/slapd.conf配置文件

# See slapd.conf(5) for details on configuration options.

# This file should NOT be world readable.

#

include         /etc/openldap/schema/corba.schema

include         /etc/openldap/schema/core.schema

include         /etc/openldap/schema/cosine.schema

include         /etc/openldap/schema/duaconf.schema

include         /etc/openldap/schema/dyngroup.schema

include         /etc/openldap/schema/inetorgperson.schema

include         /etc/openldap/schema/java.schema

include         /etc/openldap/schema/misc.schema

include         /etc/openldap/schema/nis.schema

include         /etc/openldap/schema/openldap.schema

include         /etc/openldap/schema/ppolicy.schema

include         /etc/openldap/schema/collective.schema

# Allow LDAPv2 client connections.  This is NOT the default.

allow bind_v2

# Do not enable referrals until AFTER you have a working directory

# service AND an understanding of referrals.

#referral       ldap://root.openldap.org

pidfile         /var/run/openldap/slapd.pid

argsfile        /var/run/openldap/slapd.args

sizelimit unlimited

# Load dynamic backend modules

# - modulepath is architecture dependent value (32/64-bit system)

# - back_sql.la overlay requires openldap-server-sql package

# - dyngroup.la and dynlist.la cannot be used at the same time

# modulepath /usr/lib/openldap

# modulepath /usr/lib64/openldap

# moduleload accesslog.la

# moduleload auditlog.la

# moduleload back_sql.la

# moduleload chain.la

# moduleload collect.la

# moduleload constraint.la

# moduleload dds.la

# moduleload deref.la

# moduleload dyngroup.la

# moduleload dynlist.la

# moduleload memberof.la

# moduleload pbind.la

# moduleload pcache.la

# moduleload ppolicy.la

# moduleload refint.la

# moduleload retcode.la

# moduleload rwm.la

# moduleload seqmod.la

# moduleload smbk5pwd.la

# moduleload sssvlv.la

moduleload syncprov.la

# moduleload translucent.la

# moduleload unique.la

# moduleload valsort.la

logfile /var/log/ldap.log

loglevel 256

# The next three lines allow use of TLS for encrypting connections using a

# dummy test certificate which you can generate by running

# /usr/libexec/openldap/generate-server-cert.sh. Your client software may balk

# at self-signed certificates, however.

TLSCACertificatePath /etc/openldap/certs

TLSCertificateFile "\"OpenLDAP Server\""

TLSCertificateKeyFile /etc/openldap/certs/password

# Sample security restrictions

#       Require integrity protection (prevent hijacking)

#       Require 112-bit (3DES or better) encryption for updates

#       Require 63-bit encryption for simple bind

# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:

#       Root DSE: allow anyone to read it

#       Subschema (sub)entry DSE: allow anyone to read it

#       Other DSEs:

#               Allow self write access

#               Allow authenticated users read access

#               Allow anonymous users to authenticate

#       Directives needed to implement policy:

# access to dn.base="" by * read

# access to dn.base="cn=Subschema" by * read

# access to *

#       by self write

#       by users read

#       by anonymous auth

#

# if no access controls are present, the default policy

# allows anyone and everyone to read anything but restricts

# updates to rootdn.  (e.g., "access to * by * read")

#

# rootdn can always read and write EVERYTHING!

# enable on-the-fly configuration (cn=config)

database config

access to *

        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage

        by * none

# enable server status monitoring (cn=monitor)

database monitor

access to *

        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read

        by dn.exact="cn=manager,dc=test,dc=com" read

        by * none

#######################################################################

# database definitions

#######################################################################

database        bdb

suffix          "dc=test,dc=com"

checkpoint      1024 15

rootdn          "cn=manager,dc=test,dc=com"

# Cleartext passwords, especially for the rootdn, should

# be avoided.  See slappasswd(8) and slapd.conf(5) for details.

# Use of strong authentication encouraged.

rootpw          test2017

# rootpw                {crypt}ijFYNcSNctBYg

# The database directory MUST exist prior to running slapd AND

# should only be accessible by the slapd and slap tools.

# Mode 700 recommended.

directory       /var/lib/ldap

# Indices to maintain for this database

#index objectClass                       eq,pres

index ou,cn,mail,surname,givenname      eq,pres,sub

index uidNumber,gidNumber,loginShell    eq,pres

index uid,memberUid                     eq,pres,sub

index nisMapName,nisMapEntry            eq,pres,sub

# Replicas of this database

#replogfile /var/lib/ldap/openldap-master-replog

#replica host=ldap-1.example.com:389 starttls=critical

#     bindmethod=sasl saslmech=GSSAPI

#     authcId=host/ldap-master.example.com@EXAMPLE.COM

index objectClass,entryCSN,entryUUID                       eq

overlay syncprov

syncprov-checkpoint 100 1

syncprov-sessionlog 100

2、生成DB_CONFIG

updatedb

locate DB_CONFIG.example

cp  /usr/share/openldap-servers/DB_CONFIG.example  /var/lib/ldap/

3、插入对象top,不然连接后会显示无效独享

vim db.ldif 

dn: dc=test,dc=com

dc: test 

objectClass: top

objectClass: domain

4、建立DB

slapadd -f  slapd.conf -l db.ldif  -F  /var/lib/ldap

5、测试配置

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

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

chown -R ldap:ldap /var/lib/ldap

6、启动ldap

service slapd start

slapd -d1   打印启动过程

centos7使用:systemctl restart slapd.service

7、ACL

        限制查看权限

access to attrs=userPassword

        by self write

        by anonymous auth

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

        by * none

access to dn.base="ou=People,dc=test,dc=com"

        by self write

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

        by * read

access to *

        by self write

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

        by * none

附,通过命令方式查询ldap数据信息

ldapsearch -x -H ldap://127.0.0.1:389 -b dc=test,dc=com -D "cn=test,ou=People,dc=test,dc=com" -w test123

-H 需要连接的主机

-b BaseDN

-D 验证的DN

-w 密码