文章目录
- 1. openldap 安装
- 2. 配置 openldap
- (1)使用命令直接修改原配置
- (2)重新初始化的方式
- 3. 查询
- 4. 扩展
1. openldap 安装
$ apt-cache search openldap$ apt list -a slapd // 可以使用的版本为 2.6.7
$ apt-get install slapd // 第一次安装时会提示你输入管理员密码
...
Configuring slapd
-----------------Please enter the password for the admin entry in your LDAP directory.Administrator password:Please enter the admin password for your LDAP directory again to verify that you have typed it correctly.Confirm password:
...
// 卸载 slapd
$ apt-get remove slapd --purge // 删除包,包含配置文件等
$ systemctl status slapd
$ systemctl enable slapd
默认情况下,管理员:cn=admin,dc=nodomain ,密码为刚才设置的密码

dc=nodomain 这是根据 olcSuffix 自动生成的根目录。
$ ldapsearch -x -b 'dc=nodomain' '(objectClass=*)'
# extended LDIF
#
# LDAPv3
# base <dc=nodomain> with scope subtree
# filter: (objectClass=*)
# requesting: ALL
## nodomain
dn: dc=nodomain
objectClass: top
objectClass: dcObject
objectClass: organization
o: nodomain
dc: nodomain# search result
search: 2
result: 0 Success# numResponses: 2
# numEntries: 1
2. 配置 openldap
(1)使用命令直接修改原配置
$ cat > change_suffix.ldif <<EOF
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=xiodi,dc=cndn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=xiodi,dc=cn
EOF$ ldapmodify -Y EXTERNAL -H ldapi:/// -f change_suffix.ldif
断开之前的连接,使用:cn=admin,dc=xiodi,dc=cn 再次连接,此时可以正常连接,但不会自动生成目录树,需要手工添加。

$ cat > root-tree.ldif <<EOF
dn: dc=xiodi,dc=cn
objectclass: top
objectclass: dcObject
objectclass: organization
o: aishangwei
dc: xiodi
EOF$ ldapadd -x -D "cn=admin,dc=xiodi,dc=cn" -W -f root-tree.ldif
// 刷新后查看

(2)重新初始化的方式
// 删除安装重新开始
$ apt-get remove slapd --purge
$ apt-get install slapd
$ cat /var/lib/ldap/data.mdb
[info]如果不删除重新安装的话,mdb 数据库会保留有之前的数据,也可以通过下面的方式删除数据。

// 生成加密密码
$ systemctl stop slapd
$ cd /etc/ldap
$ mv slapd.d slapd.d.bak
$ slappasswd
New password:
Re-enter new password:
{SSHA}WVbwMlKWGKu0Q7GEfitVZvkiRIZpJphP
// 配置初始文件
$ mkdir slapd.d
$ cp /usr/share/slapd/slapd.init.ldif ./
$ vim slapd.init.ldif
...
olcSuffix: dc=xiodi,dc=cn
...
olcRootDN: cn=xiodiadmin,dc=xiodi,dc=cn
olcRootPW: {SSHA}WVbwMlKWGKu0Q7GEfitVZvkiRIZpJphP
...$ slapadd -n 0 -F slapd.d -l slapd.init.ldif
$ chown -R openldap:openldap slapd.d
$ systemctl start slapd
$ systemctl status slapd
[warning]这里的 include 文件,我们保持了默认,如果需要添加或修改 include 文件,请注意顺序,有可能会导致生成配置文件失败。
// 配置基本域
$ cat > root-tree.ldif <<EOF
dn: dc=xiodi,dc=cn
objectclass: top
objectclass: dcObject
objectclass: organization
o: aishangwei
dc: xiodi
EOF$ ldapadd -x -D "cn=xiodiadmin,dc=xiodi,dc=cn" -W -f root-tree.ldif
3. 查询
// 查询
$ ldapsearch -x -b 'dc=xiodi,dc=cn' '(objectClass=*)'
$ ldapsearch -H ldapi:/// -Y EXTERNAL -b "cn=config" -LLL –Q
4. 扩展
// 初始化 slapd 配置脚本
$ cat > init_slapd.sh <<EOF
#!/bin/bash
set -e
systemctl stop slapd
rm -rf /etc/ldap/slapd.d/*
slapadd -n 0 -F /etc/ldap/slapd.d -l /etc/ldap/slapd.init.ldif
chown -R openldap:openldap /etc/ldap/slapd.d
systemctl start slapd
EOF
[danger]注意,如果是生产环境下,请提前做好 /etc/ldap/slapd.d 目录的备份
