centos 7 安装 openldap
centos 7 安装 openldap
openldap 相关名称解释及CentOS 7 配置openldap过程。
ldap的信息模型
LDAP的信息模型是建立在”条目”(entries)的基础上。一个条目是一些属性的集合,并且具有一个全局唯一的”可区分名称”DN,一个条目可以通过DN来引用。每一个条目的属性具有一个类型和一个或者多个值。类型通常是容易记忆的名称,比如”cn”是通用名称(common name) ,或者”mail”是电子邮件地址。条目的值的语法取决于属性类型。比如,cn属性可能具有一个值”Babs Jensen” ,一个mail属性可能包含 “Babs@example.com“。
ldap的objectClass
LDAP通过属性objectClass来控制哪一个属性必须出现或允许出现在一个条目中,它的值决定了该条目必须遵守的模式规则,可以理解为关系数据库的表结构。
| objectClasss | 含义 |
|---|---|
| olcGlobal | 全局配置文件类型,主要是cn=config.ldif |
| top | 顶层对象 |
| organization | 组织,比如公司名称,顶层对象 |
| organizationalUnit | 重要,一个目录节点,通常用来分组,类似Linux文件系统中的子目录,组织单位可以包含其它各类对象 |
| inetOrgPerson | 重要,我们真正的用户节点为类型,person类型,叶子节点 |
| groupOfNames | 重要,分组的group类型,标记一个group节点 |
| groupOfUniqueNames | 分组,unique名称,每个用户是unique节点 |
| olcModuleList | 配置块的对象 |
ldap常用关键字列表
ldap的entry是由各种字段组成,可以理解为关系数据库的一行,每个entry对应关系数据库中的一行。
|关键字|英文全称|含义|
|:—|:—|
|dc|Domain Component|域名的部分,其格式是将完整域名分成几部分,如域名example.com变成dc=example,dc=com|
|uid|User Id|用户名,如“tom”|
|ou|Organization Unit|组织单位,类似Linux文件系统中的子目录,它是一个窗口对象,组织单位可以包含其它各类对象|
|cn|Common Name|公共名称,比如”Thomas Johansson”|
|sn|surname|姓,如“Johansson”|
|dn|Distinguished Name|唯一辨识名,类似Linux文件系统中的绝对路径,每个对象都有一个唯一的名称,如”uid=tom,ou=market,dc=example,dc=com”,在一个目录树中DN是唯一的。|
|rdn|Relative dn|相对辨识名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,比如“uid=tom”或”cn=Thomas”|
|c|Country|国家,如“CN”或“US”等|
|o|Organization|组织名,比如“Example,Inc.”|
|dc|olcDatabase| {mappings}| {config}|
|olcRootDN| root dn |
|olcRootPW| root password |
centos 7 安装 openldap
在centos 7中使用yum安装openldap,并安装phpldapadmin管理工具。
安装openldap
yum安装openldap。
1 | |
配置openldap
配置前的准备工作:
关闭selinux
1
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux复制数据库模版
1
2cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap:ldap /var/lib/ldap/启动slapd服务
1
2systemctl start slapd
systemctl enable slapd # 开启加载服务如果启动失败,一般提示证书相关,可以如下操作:
1
2
3
4
5
6
7cd /etc/openldap/certs
rm ./*
# 重新生成证书
bash /usr/libexec/openldap/create-certdb.sh
bash /usr/libexec/openldap/generate-server-cert.sh
# 再次重启
systemctl start slapd启动失败的第二个问题,hostname,手动添加/etc/hosts一行记录,主机IP+主机名即可。
防火墙放通openldap服务
1
2
3firewall-cmd --permanent --add-service=ldap
firewall-cmd --permanent --add-service=http
firewall-cmd --complete-reload
生成密码
使用slappasswd生成密码:
1 | |
记住生成的密码。
新增修改密码文件
可以在家目录下创建一个ldif,创建ldif文件操作。示例如下:
1 | |
以上ldif文件的内容解释:
- 第一行指定操作的数据库,这里是
olcDatabase={0}config - 第二行指定操作类型为
modify - 第三行添加
olcRootPW属性,值就是我们生成的密码hash。
执行导入命令,修改ldap配置文件,通过-f执行文件:
1 | |
导入schema文件
这些schema文件位于/etc/openldap/schema/目录中,schema控制着条目拥有哪些对象、类型和属性,需要自行选择需要的进行导入。
1 | |
修改域名
添加一个域名文件,编辑你的域名信息,管理员为admin。
1 | |
添加base.ldif文件,导入:
1 | |
安装phpldapadmin
ldap安装好后,可以安装web管理界面phpldapadmin。centos 7 默认的源中是php5。如果是php7,会有报错。
1 | |
修改httpd配置
修改apache的phpldapadmin配置文件,配置外网访问。
1 | |
修改配置用DN登录phpldapadmin
修改配置文件/etc/phpldapadmin/config.php,去掉注释修改以下配置行,允许我们使用外部dn登录:
1 | |
启动apache
启动httpd服务和设置开机自启动。
1 | |
登录phpldapadmin
使用浏览器访问http://server_ip/phpldapadmin。即可打开登录测试。打开后输入cn=admin,dc=example,dc=com,输入你之前设置的root密码,即可登录。