问题描述
该笔记将记录:在 Linux 中,如何搭建 LDAP 服务,以及相关问题的解决方法。
环境概述
操作系统:Ubuntu 20.04.3 LTS
软件版本:2.4.49+dfsg-2ubuntu1.8
解决方案
已有很多关于 LADP 服务搭建的文章,我们能够进行参考(这里做简单记录)。
第零步、准备工作
1)修改主机名:
hostnamectl set-hostname ldap.d3rm.org
2)添加 ldap.d3rm.org 的 DNS A 记录,并解析到该主机(或通过修改 /etc/hosts 文件,这里不再展开)。
关于修改主机名:
1)修改主机名主要是为了域名最后的部分,这里为 d3rm.org 部分;
2)在安装 slapd 过程中,会提取该值作为 BDN 信息(dc=d3rm,dc=org);
3)否则,就要使用 dpkg-reconfigure slapd 来重新进行配置;
4)如果未设置主机名,则 cn=admin 将属于 dc=nodomain 条目;
第一步、安装服务
# apt-get install -y slapd ldap-utils ... // 在安装的过程中会提示输入 admin 密码,根据提示设置即可;
执行 slapcat 命令,以检查服务安装成功:
# slapcat dn: dc=d3rm,dc=org objectClass: top objectClass: dcObject objectClass: organization o: tech dc: d3rm structuralObjectClass: organization entryUUID: 0d94ef1c-a873-103b-8452-1d0030c906c2 creatorsName: cn=admin,dc=d3rm,dc=org createTimestamp: 20210913001240Z entryCSN: 20210913001240.349640Z#000000#000#000000 modifiersName: cn=admin,dc=d3rm,dc=org modifyTimestamp: 20210913001240Z dn: cn=admin,dc=d3rm,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword:: e1NTSETVaMWWYNnk3UThZZVZ1OExYOFVnek2WF9nhlUStrVodHU= structuralObjectClass: organizationalRole entryUUID: 0d96542e-a873-103b-8453-1d0030c906c2 creatorsName: cn=admin,dc=d3rm,dc=org createTimestamp: 20210913001240Z entryCSN: 20210913001240.358960Z#000000#000#000000 modifiersName: cn=admin,dc=d3rm,dc=org modifyTimestamp: 20210913001240Z
第二步、创建数据条目
创建用户和组的 BDN 信息:
# vim basedn.ldif dn: ou=people,dc=d3rm,dc=org objectClass: organizationalUnit ou: people dn: ou=groups,dc=d3rm,dc=org objectClass: organizationalUnit ou: groups # ldapadd -x -D cn=admin,dc=d3rm,dc=org -W -f basedn.ldif Enter LDAP Password: adding new entry "ou=people,dc=d3rm,dc=org" adding new entry "ou=groups,dc=d3rm,dc=org"
在 people 中添加条目:
// 该步骤只是创建加密后的密码 # slappasswd New password: Re-enter new password: {SSHA}Zn4/E5f+Ork7WZF/alrpMuHHGufC3x0k # vim ldapusers.ldif dn: uid=computingforgeeks,ou=people,dc=d3rm,dc=org objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: computingforgeeks sn: Wiz userPassword: {SSHA}Zn4/E5f+Ork7WZF/alrpMuHHGufC3x0k loginShell: /bin/bash uidNumber: 2000 gidNumber: 2000 homeDirectory: /home/computingforgeeks # ldapadd -x -D cn=admin,dc=d3rm,dc=org -W -f ldapusers.ldif Enter LDAP Password: adding new entry "uid=computingforgeeks,ou=people,dc=d3rm,dc=org"
在 Group 中添加条目:
# ldapadd -x -D cn=admin,dc=d3rm,dc=org -W -f ldapusers.ldif Enter LDAP Password: adding new entry "uid=computingforgeeks,ou=people,dc=d3rm,dc=org" # vim ldapgroups.ldif dn: cn=computingforgeeks,ou=groups,dc=d3rm,dc=org objectClass: posixGroup cn: computingforgeeks gidNumber: 2000 memberUid: computingforgeeks # ldapadd -x -D cn=admin,dc=d3rm,dc=org -W -f ldapgroups.ldif Enter LDAP Password: adding new entry "cn=computingforgeeks,ou=groups,dc=d3rm,dc=org"
第三步,查看已添加条目
# slapcat ...
通过 LDAP Admin 查看:
通过 ldapserch 查找:
# ldapsearch -x -b "dc=d3rm,dc=org" -H ldap://127.0.0.1 -D "cn=admin,dc=d3rm,dc=org" -W "uidNumber=2000" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <dc=d3rm,dc=org> with scope subtree # filter: uidNumber=2000 # requesting: ALL # # computingforgeeks, people, d3rm.org dn: uid=computingforgeeks,ou=people,dc=d3rm,dc=org objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: computingforgeeks sn: Wiz userPassword:: e1NTSEF9S1V4Yy95a3hTNWV1ajVpYjBWOEFuMUxhVWJPMkE5SWQ= loginShell: /bin/bash uidNumber: 2000 gidNumber: 2000 homeDirectory: /home/computingforgeeks uid: computingforgeeks # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
参考文献
Install and Configure OpenLDAP Server on Ubuntu 20.04|18.04 LTS
Is “dc=nomain” a in LDAP ACLs?
How To Search LDAP using ldapsearch (With Examples)