OpenLDAP部署

1. 简介

OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。

主要包括以下4个部分:

  • slapd - 独立LDAP守护服务;
  • slurpd - 独立的LDAP更新复制守护服务;
  • 实现LDAP协议的库;
  • 工具软件和示例客户端;

2. 使用 docker 搭建部署 OpenLDAP

这里使用的是 ubuntu 20.04,已经提前安装好了docker。

2.1 下载 ldap 镜像

docker pull osixia/openldap:1.2.2

docker pull osixia/phpldapadmin:0.7.2

2.2 使用 docker 运行 ldap

docker run --name my-openldap-container -d osixia/openldap:1.2.2
docker exec -it my-openldap-container bash
slaptest   #验证 slapd.conf 文件或 cn=配置目录
ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin

#ldapsearch:用于查询数据
#-x:用389端口进行简单认证
#-H:指定ldap server的地址,我们使用docker运行,所以此处是本机地址localhost
#-b:指明只在ldap search时有用,指明当前搜索范围的域名在哪里
#-D:当前用户的身份dn(管理员身份)
#-w:用户的密码

可以看到openldap已经启动成功

3. OpenLDAP 基础

3.1 OpenLDAP命令及数据操作

命令格式:ldapmodify [ldap 服务器地址] [你的用户名] [你的密码] [ldif 文件的地址]

Option

说明

-H

ldapuri,格式为ldap://机器名或者IP:端口号,不能与-h和-p同时使用

-h

LDAP服务器IP或者可解析的hostname,与-p可结合使用,不能与-H同时使用

-p

LDAP服务器端口号,与-h可结合使用,不能与-H同时使用

-x

使用简单认证方式

-D

所绑定的服务器DN

-w

绑定DN的密码,与-W二选一

-W

不输入密码,会交互式的提示用户输入密码,与-w二选一

-f

指定ldif文件作为输入

-a

添加新的entry,ldapadd缺省使用,ldapmodif可指定以达到同样作用

-c

出错后忽略当前错误继续执行,缺省情况下遇到错误即终止

-n

模拟操作但并不实际执行,用于验证,常与-v一同使用进行问题定位

-v

显示详细信息

-b

用于指定查找的节点

-d

显示debug信息,可设定级别

-e

设置客户端证书

-E

设置客户端私钥

-LLL

禁止输出与查找范围不匹配的信息

3.1.1 ldapsearch 对数据库进行检索查询

ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin

还可以在查询后指定 cn 或查询所有 cn

ldapsearch -x -H ldap://127.0.0.2:389 -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin "cn=*"

3.1.2 ldapadd 增加新成员

在容器中的/home目录下新建一个learn目录

由于容器内没有 vi/vim,所以使用一种比较别扭的方式写入 lidf 文件

ldap 所有的数据文件都存储在 ldif 文件中

#冒号:后必须要有一个空格
cat > barbara.ldif << EOF
> dn: cn=barbara,dc=example,dc=org   #第一行必须是dn,必须要有的
> objectClass: inetOrgPerson   #一个对象类,下面的数据都是存在这里
> cn: barbara   #一条记录的名称
> sn: Jensen   #姓
> title: the world's most famous mythical manager
> mail: bjensen@example.com
> uid: bjensen   #用户id
> EOF

使用 ldapadd 命令增加新成员

ldapadd -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=example,dc=org" -w admin -f barbara.ldif

3.1.3 ldapdelete 删除成员

ldapdelete -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=example,dc=org" -w admin "cn=barbara,dc=example,dc=org"

3.1.4 ldapmodify 通过配置文件实现不同的修改功能

写入 ldif 文件

cat > addorg.ldif << EOF
> dn: cn=barbara,dc=example,dc=org
> changetype: add   #告诉ldapmodify是需要新增数据
> objectClass: inetOrgPerson
> cn: barbara
> sn: Jensen
> title: the world's most famous mythical manager
> mail: bjensen@example.com
> uid: bjensen
> EOF

使用 ldapmodify 命令新增成员

ldapmodify -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=example,dc=org" -w admin -f barbara.ldif

写入 ldif 文件

dn: ou=People,dc=example,dc=org
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: People

dn: ou=Servers,dc=example,dc=org
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: Servers

使用 ldapmodify 命令新增数据

ldapmodify -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=example,dc=org" -w admin -f addorg.ldif

3.1.5 ldappasswd 重置其他用户的密码

ldappasswd 用于重置其他用户的密码

ldapmodify 用于更改自己的密码

使用 ldappasswd

ldappasswd -x -H ldap://127.0.0.2:389 -D "cn=admin,dc=example,dc=org" -w admin "cn=barbara,dc=example,dc=org"

更改 barbara 的密码

ldappasswd -x -H ldap://127.0.0.2:389 -D "cn=barbara,dc=example,dc=org" -w xxxx -s mima

使用 ldapmodify

root@f6885a04cb54:/home/learn# cat > passwd.ldif << EOF
> dn: cn=barbara,dc=example,dc=org
> changetype: modify
> replace: userPassword
> userPassword: xinmima
> EOF

ldapmodify -x -H ldap://127.0.0.2:389 -D "cn=barbara,dc=example,dc=org" -w mima -f passwd.ldif

ldapmodify -x -H ldap://127.0.0.2:389 -D "cn=barbara,dc=example,dc=org" -w xinmima -f passwd.ldif

4. 本地搭建部署 OpenLDAP

这里使用的是 虚拟机 ubuntu 20.04

4.1 更新系统的包索引

apt update

4.2 安装LDAP

apt install slapd ldap-utils -y

第一次安装会弹出如下所示的配置,要求设置管理员密码:admin123

4.3 验证

安装完成之后,验证 slapd.conf 文件或 cn=配置目录

slaptest

4.4 重新配置

使用dpkg-reconfigure slapd命令重新配置安装过的 ldap

4.4.1 是否创建初始配置或数据库

如果启用此选项,则不会为您创建初始配置或数据库,省略 openldap 服务器配置

这里选No

4.4.2 创建DNS域名

DNS域名用于构建LDAP目录的基本DN,也就是客户端要填写的基准DN

这里填写 example.com

4.4.3 设置组织名称/域名

请输入要在LDAP目录的基本DN中使用的组织名称

这里填写 example

4.4.4 卸载时是否删除数据库

清除 slapd 时是否希望删除数据库

这里选 No

4.4.5 创建新数据库之前是否移动旧数据库

/var/lib/ldap 中仍有文件可能会中断配置过程。如果启用这个选项,maintainer 脚本会在创建新数据库之前将旧的数据库文件移走。

移动旧数据库

这里选择 No

.5 查看启动情况及版本

systemctl status slapd查看启动情况

slapd -VV 查看版本

5. 基础使用

5.1 查看目录数据库中的条目

slapcat

ldapsearch -x -b dc=example,dc=com

5.2 添加用户

在/etc/ldap目录下新建一个 add_content.ldif 文件,用来添加对应用户密码,添加一个 john 用户。

cd /etc/ldap

vim add_content.ldif

注意:在服务器配置时要将注释的解释删除

dn: ou=People,dc=example,dc=com   #记录在数据库的位置
objectClass: organizationalUnit   #对象类:组织单位
ou: People   #组织单位

dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=miners,ou=Groups,dc=example,dc=com
objectClass: posixGroup
cn: miners   #公共常用名称,一条记录的名称
gidNumber: 5000   #编号

dn: uid=john,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john   #用户 id
sn: Doe   #姓
givenName: John   #给定的名称
cn: John Doe
displayName: John Doe   #显示名称
uidNumber: 10000
gidNumber: 5000
userPassword: johnldap
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john
dn: uid=zhangsan,ou=Fawaikuangtu,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: zhangsan
sn: Jo
givenName: zhangsan
cn: zhangsan Jo
displayName: zhangsan Jo
uidNumber: 10001
gidNumber: 5001
userPassword: 123456
gecos: zhangsan Jo
loginShell: /bin/bash
homeDirectory: /home/john

使用 ldapadd 命令添加用户,-x:简单身份验证

ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_content.ldif

ldapsearch -x -b dc=example,dc=com,-b:basedn 从基础 dn 开始搜索

ldapsearch -x -D "cn=admin,dc=example,dc=com" -b "ou=People,dc=example,dc=com" -W

查看添加成功

5.3 下载 windows 版本的 ldap 客户端连接

下载 LDAP Admin(LDAP管理工具)

创建新连接

测试连接,连接成功

即可看到我们添加的新用户信息

6. 卸载 OpenLDAP

6.1 停止openldap

systemctl stop slapd

systemctl disable slapd

6.2 卸载

apt remove slapd ldap-utils -y

6.3 删除残留文件及目录

rm -rf /var/lib/ldap

rm -rf /etc/ldap

6.4 删除 ldap 用户及组

userdel ldap

userdel 曾创建的其他 ldap 相关用户

groupdel 曾创建的其他 ldap 相关组

注意:若用户及组不删除干净会影响后面的重装。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值