Ladp数据库安装和配置自定义schema ,Centos7环境

最近安装ldap看了不少教程,整理下用到的有用的资料,并把自己的搭建过程分享。

参考

1,安装和配置

yum 安装相关包

yum install -y openldap openldap-clients openldap-servers

拷贝数据库配置文件

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap. /var/lib/ldap/DB_CONFIG

启动服务,先启动服务,配置后面再进行修改

systemctl start slapd
systemctl enable slapd
#查看状态
systemctl status slapd

修改配置

从openldap2.4.23版本开始,所有配置都保存在/etc/openldap/slapd.d目录下的cn=config文件夹内,不再使用slapd.conf作为配置文件。配置文件的后缀为 ldif,ldap的配置在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,需要使用ldapmodify命令进行修改。

设置用户密码,生成的加密密码后面需要用到(ldap的加密是同样的密码加密后都不一样)

slappasswd -s 123456
{SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW

开始修改,创建一个修改文件。

vim changepwd.ldif

添加内容

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW

然后执行,在执行下面的命令前,你可以先查看原本的/etc/openldap/slapd.d/olcDatabase={0}config文件,里面是没有olcRootPW这个项的,执行命令后,你再看就会新增了olcRootPW项,而且内容是我们文件中指定的值加密后的字符串

ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

备注:如果/etc/openldap/slapd.d/下cn=config/olcDatabase={0}config文件已经存在olcRootPW 使用replace
changepwd.ldif内容:

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW
ldapmodify -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

导入配置

# 我们需要向 LDAP 中导入一些基本的 Schema。这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性,可以自行选择需要的进行导入,
# 依次执行下面的命令,导入基础的一些配置,我这里将所有的都导入一下,其中core.ldif是默认已经加载了的,不用导入
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif

修改域名

域名的信息保存在/etc/openldap/slapd.d/cn=config文件夹下
olcDatabase={1}monitor,cn=config配置中可以查看,不能直接修改。这边使用命令修改。
创建一个changedomain.ldif修改文件。

vim changedomain.ldif

比如我域名是dc=sichuan,dc=cmcc ,用户为cn=Manager,changedomain.ldif文件配置如下:

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=sichuan,dc=cmcc" read by * none
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=sichuan,dc=cmcc
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=sichuan,dc=cmcc
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}7j4lLAvS1mToAZpIyefQdTYqCvL0hiVa
 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=sichuan,dc=cmcc" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=sichuan,dc=cmcc" write by * read

执行:

ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif

创建组织单元

在dc=sichuan,dc=cmcc组织下 创建Account 和Role两个组织单元:

新增cmcc.ldif文件

vim  cmcc.ldif
dn: dc=sichuan,dc=cmcc
objectClass: domain
objectClass: top
o: cmcc
dc: sichuan

dn: ou=Account,dc=sichuan,dc=cmcc
objectClass: organizationalUnit
ou: Account
description: account for cmcc

dn: ou=Role,dc=sichuan,dc=cmcc
objectClass: organizationalUnit
ou: Role
description: role for cmcc

执行命令,添加配置, 这里要注意修改域名为自己配置的域名,然后需要输入上面我们的密码(123456)

ldapadd -x -D cn=Manager,dc=sichuan,dc=cmcc -W -f cmcc.ldif

2,schema自定义格式

schema,是一个标准,定义了ldap的对象和属性,也就是ldap能够存储什么数据,数据有什么属性等。

/etc/openldap/slapd.d/cn=config/cn=schema/文件夹保存了运行使用的schema文件,我们需要生成cmcc.schema放进来。

由于ldap中的对象不满足现有需求,需要自定义对象和属性。
创建两个对象cmcc-Account和cmcc-Role
cmcc-Account对象包含Uid,accPassword ,accRole , accstatus , accReserve1 , accReserve2 , accReserveList1 , accReserveList2属性
cmcc-Role对象包含roleName, roleDesc, accReserve1 , accReserve2 , accReserveList1 , accReserveList2属性

创建cmcc.schema文件

vim cmcc.schema
attributetype ( 1.3.6.1.4.1.79145.1.2.1.2 NAME 'accPassword' 
	DESC 'accPassword' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.3 NAME 'accRole' 
	DESC 'accRole' 
	EQUALITY caseIgnoreMatch
	SUBSTR caseIgnoreSubstringsMatch 	
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) 

attributetype ( 1.3.6.1.4.1.79145.1.2.1.4 NAME 'accstatus' 
	DESC 'accstatus' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.5 NAME 'accReserve1' 
	DESC 'accReserve1' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.6 NAME 'accReserve2' 
	DESC 'accReserve2' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.7 NAME 'accReserveList1' 
	DESC 'accReserveList1' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.8 NAME 'accReserveList2' 
	DESC 'accReserveList2' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.9 NAME 'roleName' 
	DESC 'roleName' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 
	
attributetype ( 1.3.6.1.4.1.79145.1.2.1.10 NAME 'roleDesc' 
	DESC 'roleDesc' 
	EQUALITY caseIgnoreMatch 
	SUBSTR caseIgnoreSubstringsMatch 
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} 
	SINGLE-value ) 

objectclass ( 1.3.6.1.4.1.79145.1.2.2.1 NAME 'cmcc-Account' 
	DESC 'a cmcc-Account' 
	SUP top STRUCTURAL 
	MUST ( uID ) 
	MAY ( accPassword $ accRole $ accstatus $ accReserve1 $ accReserve2 $ accReserveList1 $ accReserveList2 ) ) 

objectclass ( 1.3.6.1.4.1.79145.1.2.2.2 NAME 'cmcc-Role' 
	DESC 'a cmcc-Role' 
	SUP top STRUCTURAL 
	MUST ( roleName ) 
	MAY ( roleDesc $ accReserve1 $ accReserve2 $ accReserveList1 $ accReserveList2 ) ) 

将cmcc.schema文件放到/etc/openldap/schema

在tmp文件夹 创建schema文件夹
创建convert.conf文件,在末尾加入cmcc.schema

cd /tmp
mkdir schema
vim convert.conf
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include	/etc/openldap/schema/cmcc.schema

生成ldap信息文件

slaptest -f /tmp/convert.conf -F /tmp/schema 

给ldap添加生成的cmcc.ldif文件

cp /tmp/schema/cn\=config/cn\=schema/cn\=\{12\}cmcc.ldif /etc/openldap/slapd.d/cn\=config/cn\=schema/

#给ldap 添加权限
cd /etc/openldap/slapd.d/cn=config/cn=schema/
chown ldap:ldap cn\=\{12}cmcc.ldif

重启

ps aux | grep ldap
kill -9 pid

//启动
systemctl start slapd

//状态
systemctl status slapd

3,连接ldap数据库效果

我使用的window版LdapAdmin.exe 连接的ldap。
查看自定义schema是否成功,可以点击Tools->schema 查看object classes 和Attribue Types中是否存在。

登陆界面:
在这里插入图片描述
组织结构:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是在CentOS 7.6上部署LDAP的步骤: 1. 安装OpenLDAP和相关工具: ``` yum install openldap openldap-servers openldap-clients migrationtools -y ``` 2. 配置slapd.conf文件: 编辑/etc/openldap/slapd.conf文件并添加以下内容: ``` include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args database bdb suffix "dc=example,dc=com" rootdn "cn=Manager,dc=example,dc=com" rootpw {SHA}hashed_password directory /var/lib/ldap access to * by * read ``` 将 "dc=example,dc=com" 修改为您的组织名称,并设置 "rootpw" 为管理员密码的SHA哈希值。您可以使用以下命令生成SHA哈希值: ``` slappasswd -s 密码 ``` 3. 配置ldap.conf文件: 编辑/etc/openldap/ldap.conf文件并添加以下内容: ``` BASE dc=example,dc=com URI ldap://localhost ``` 将 "dc=example,dc=com" 修改为您的组织名称。 4. 导入示例数据: 在/usr/share/openldap/migration目录下有一个示例数据文件,您可以使用以下命令将示例数据导入LDAP数据库: ``` cp /usr/share/openldap/migration/migrate_common.ph /usr/share/openldap/migration/migrate_common.ph.bak sed -i 's/^\$DEFAULT_MAIL_DOMAIN.*$/\$DEFAULT_MAIL_DOMAIN = "example.com";/g' /usr/share/openldap/migration/migrate_common.ph /usr/share/openldap/migration/migrate_base.pl > /tmp/base.ldif /usr/share/openldap/migration/migrate_passwd.pl /etc/passwd > /tmp/passwd.ldif /usr/share/openldap/migration/migrate_group.pl /etc/group > /tmp/group.ldif ldapadd -x -D "cn=Manager,dc=example,dc=com" -f /tmp/base.ldif -w 管理员密码 ldapadd -x -D "cn=Manager,dc=example,dc=com" -f /tmp/passwd.ldif -w 管理员密码 ldapadd -x -D "cn=Manager,dc=example,dc=com" -f /tmp/group.ldif -w 管理员密码 ``` 将 "example.com" 修改为您的邮件域名,并将 "dc=example,dc=com" 修改为您的组织名称。确保替换 "管理员密码" 为您的管理员密码。 5. 启动slapd服务: ``` systemctl start slapd systemctl enable slapd ``` 现在,您已经在CentOS 7.6上成功部署了LDAP服务。您可以使用ldapsearch命令测试LDAP是否正常工作。例如,使用以下命令查询所有用户信息: ``` ldapsearch -x -b "dc=example,dc=com" "(objectClass=*)" -D "cn=Manager,dc=example,dc=com" -w 管理员密码 ``` 将 "dc=example,dc=com" 修改为您的组织名称,并将 "管理员密码" 修改为您的管理员密码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值