1 准备条件
1.1 系统环境
当前系统版本:centos7.7 x86_64 GNU/Linux
1.2 软件
openldap-2.4.44.tgz
db-5.1.29.tar.gz
ldapadmin-4.13 windows链接,可视化工具
1.3 准备工作
1.3.1 关闭selinux
①临时关闭 (不需要重启服务器)
setenforce 0
然后再输入命令:getenforce 0进行查看,此时变成了Permissive,则说明SElinux关闭成功
②永久关闭 (需要重启服务器)
vim /etc/selinux/config
修改/etc/selinux目录下的config文件
将SELINUX=enforcing改为SELINUX=disabled
1.3.2 打开防火墙tcp 389 / 636端口或关闭防火墙。
查看环境防火墙是否开启,如果loaded状态表示未开启
systemctl status firewalld
如果是激活状态则执行如下命令关闭防火墙:
systemctl stop firewalld.service
并禁止开机自启动
systemctl disable firewalld.service
2 软件获取
注意:openldap官方说明openldap-2.4.4可以不用依赖MDB和BDB数据库,因此在编译的时候可以不用添加BDB数据库。
2.1 下载BDB
下载berkeley-db-5.1.29
http://download.oracle.com/berkeley-db/db-5.1.29.tar.gz
2.2 下载OPENLADB
进入openladb下载地址,选择2.4.44版本
https://www.openldap.org/software/download/OpenLDAP/openldap-release/
2.3 LDAP Administrtor
官网下载地址:http://www.ldapbrowser.com/download.htm
64-bit:http://softerra-downloads.com/ldapadmin/ldapadmin-4.13.16704.0-x64-eng.msi
3 安装OPENLDAP
3.1 安装依赖包
这里需要配置yum源,如阿里/网易等,或者可以配置使用离线yum源,详情可看这篇文章
yum install *ltdl* -y
涉及libtool-ltdl与libtool-ltdl-devel,如不安装,在编译时报错:configure: error: could not locate libtool ltdl.h
安装Cyrus SASL
yum install -y cyrus-sasl-*
**注意:**如果不安装cyrus-sasl-*,编译完成后会报如下错误
ldap_sasl_interactive_bind_s: Can’t contact LDAP server (-1)
3.2 安装BDB
解压db-5.1.29.tar.gz,并进入build_unix目录进行编译安装
#注意:必须在解压包的build_unix目录中编译安装,否则会报错
tar -zxvf db-5.1.29.tar.gz
cd db-5.1.29/build_unix/
../dist/configure --prefix=/usr/local/berkeleydb-5.1.29
注意: --prefix指定安装路径,其他配置信息可通过./configure --help
等待命令执行完成,接下来执行make和make install命令
make
make install
3.3 更新lib库
#保证在后面编译openldap时能找到lib和include下的库
cd /root/software/berkeley-db-5.1.29
echo "/usr/local/berkeleydb-5.1.29/lib/" > /etc/ld.so.conf
ldconfig -v
这里的目录/root/software/berkeley-db-5.1.29指的是解压berkeley-db-5.1.29.tar.gz的目录
3.4 安装openldap
3.4.1 解压openldap-2.4.44.tgz文件并进入目录
tar -zxvf openldap-2.4.44.tgz
cd openldap-2.4.44
3.4.2 执行编译命令:
./configure --prefix=/usr/local/openldap-2.4.44 --enable-syslog --enable-modules --enable-debug --with-tls CPPFLAGS=-I/usr/local/berkeleydb-5.1.29/include/ LDFLAGS=-L/usr/local/berkeleydb-5.1.29/lib/
注意:① 如果未设置CPPFLAGS,configure过程可能会提示configure: error: BDB/HDB: BerkeleyDB not available 或 configure: error: BerkeleyDB version incompatible with BDB/HDB backends
② 这里编译时可以不用添加BDB或HDB数据库,具体需要添加如下参数:
--enable-bdb=no --enable-hdb=no
接下来按照提示分别运行如下命令:
make depend # 执行该命令可以关联openldap所依赖的BDB相关内容
make
make test #这一步会比较耗时,耐心等待执行完成
make install
3.4.3 设置可执行命令
对openldap客户端(bin)与服务器端(sbin)相关执行档添加软链接,也可以通过增加环境变量的方式设置
[root@yum-1 openldap-2.4.44]# cd /usr/local/openldap-2.4.44
[root@yum-1 openldap-2.4.44]# ln -s /usr/local/openldap-2.4.44/bin/* /usr/local/bin/
[root@yum-1 openldap-2.4.44]# ln -s /usr/local/openldap-2.4.44/sbin/* /usr/local/sbin/
执行完上述操作,openldap已经编译完成可以使用了。
4 openldap配置
4.1 openldap-2.4.44目录结构
bin/ --客户端工具如ldapadd、ldapsearch
etc/ --包含主配置文件slapd.conf、schema、DB_CONFIG等
include/
lib/
libexec/ --服务端启动工具slapd
sbin/ --服务端工具如slappasswd
share/
var/ --bdb数据、log存放目录
4.2 配置rootdn密码(optional)
设置rootdn密码,这里设置为chen1126
这样rootdn密码为密文方式,复制输出密文到主配置文件rootdn对应的位置即可,如果不想麻烦,可以忽略此步,在主配置文件中使用明文即可。
[root@yum-1 openldap-2.4.44]# slappasswd
New password:
Re-enter new password:
{
SSHA}K9+WK/t1e0V0K6pUMOyTsaTwkDBNEDiP
4.3 主配置文件slapd.conf
cd /usr/local/openldap-2.4.44/etc/openldap/
vim slapd.conf
新增如下内容:
#schema默认只有core.schema,各级需要添加,这里将同配置文件一个目录的schema目录中有的schema文件都加到配置文件中;
include /usr/local/openldap-2.4.44/etc/openldap/schema/collective.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/corba.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/cosine.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/duaconf.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/dyngroup.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/inetorgperson.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/java.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/misc.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/nis.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/openldap.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/pmi.schema
include /usr/local/openldap-2.4.44/etc/openldap/schema/ppolicy.schema
#新增日志文件级别与路径,需要在编译时–enable-debug,否则日志文件输出,不影响调试模式;
loglevel 256
logfile /usr/local/openldap-2.4.44/var/slapd.log
#修改域名及管理员账户名;
suffix “dc=chen,dc=com”
rootdn “cn=admin,dc=chen,dc=com”
#使用密文密码,即前面使用slappasswd生成的密文或明文密码;
rootpw {SSHA}K9+WK/t1e0V0K6pUMOyTsaTwkDBNEDiP
4.3 启动OpenLADP
/usr/local/openldap-2.4.44/libexec/slapd
4.4 验证是否启动
ldapsearch -x -b '' -s base'(objectclass=*)'
如图示,说明openldap已经启动运行成功:
5 openldap简单使用
5.1 创建1个管理员账号
编辑test.ldif文件,注意与slapd.conf文件中保持一致
dn: dc=chen,dc=com
objectclass: dcObject
objectclass: organization
o: Chen.Inc
dc: chen
dn: cn=admin,dc=chen,dc=com
objectclass: organizationalRole
cn: admin
插入数据库
ldapadd -x -D "cn=admin,dc=chen,dc=com" -W -f test.ldif
验证是否插入成功
ldapsearch -x -b 'dc=chen,dc=com' '(objectClass=*)'
5.2 创建1个具有部门属性的员工
编辑test2.ldif文件,注意与slapd.conf文件中保持一致
这里其实是先创建1个部门”it”,再在”it”部门创建了1个员工,实际上是两条
dn: ou=it,dc=chen,dc=com
ou: it
objectClass: organizationalUnit
dn: cn=employee1,ou=it,dc=chen,dc=com
ou: it
cn: employee1
sn: t1
objectClass: inetOrgPerson
objectClass: organizationalPerson
插入数据库
ldapadd -x -D "cn=admin,dc=chen,dc=com" -W -f test2.ldif
验证是否插入成功
ldapsearch -x -b 'dc=chen,dc=com' '(objectClass=*)'
6 使用ldapadmin可视化工具
新建profile
输入profile名字,点击下一步
输入Host地址,Port默认为389(注意iptables是否开放389端口);
BaseDN处默认为空,标示在根节点上,如果不想显示根节点,可在后方下拉列表中选择具体的一级数据库,下一步
选择"Other credenti",
Mechanism选择"Simple",
Princip处输入"cn=admin,dc=chen,dc=com",
Password处填写相应密码,保存密码,点击"完成"即创建成功。
验证
7 附录
LDAP为人员组织机构中常见的对象都设计了属性(比如commonName,surname)。下面有一些常用的别名:
属性名称 | 属性别名 | 语法 | 描述 | 值 |
---|---|---|---|---|
commonName | cn | Directory String | 名字 | kk |
surname | sn | Directory String | 姓式 | chen |
organizationalUnitName | ou | Directory String | 单位(部门)名称 | IT_SECTION |
organization | o | Directory String | 组织(公司)名称 | linux |
objectClass | 内置属性 | organizationa | ||
domaincompoent | dc | Directory String | 域名 | chen |
country | c | Directory String | 国家 | US |