开江住房和城乡建设部网站,自己怎样建立个人网站,网站开发工程师任职资格,做二手货车都做什么网站最近安装ldap看了不少教程#xff0c;整理下用到的有用的资料#xff0c;并把自己的搭建过程分享。
参考 ldap介绍#xff1a;openLDAP入门与安装 官方文档#xff1a;https://www.openldap.org/doc/admin22/schema.html 安装配置#xff1a;Centos7 搭建openldap完整详…最近安装ldap看了不少教程整理下用到的有用的资料并把自己的搭建过程分享。
参考 ldap介绍openLDAP入门与安装 官方文档https://www.openldap.org/doc/admin22/schema.html 安装配置Centos7 搭建openldap完整详细教程(真实可用) bug解决ldap运维中遇到的问题 schema自定义导入schema到openLdap window文件转为unix文件
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目录下的cnconfig文件夹内不再使用slapd.conf作为配置文件。配置文件的后缀为 ldifldap的配置在开头都会有一行注释说明此为自动生成的文件请勿编辑需要使用ldapmodify命令进行修改。
设置用户密码生成的加密密码后面需要用到ldap的加密是同样的密码加密后都不一样
slappasswd -s 123456
{SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW开始修改创建一个修改文件。
vim changepwd.ldif添加内容
dn: olcDatabase{0}config,cnconfig
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/下cnconfig/olcDatabase{0}config文件已经存在olcRootPW 使用replace changepwd.ldif内容
dn: olcDatabase{0}config,cnconfig
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvWldapmodify -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/cnconfig文件夹下 olcDatabase{1}monitor,cnconfig配置中可以查看不能直接修改。这边使用命令修改。 创建一个changedomain.ldif修改文件。
vim changedomain.ldif比如我域名是dcsichuan,dccmcc 用户为cnManagerchangedomain.ldif文件配置如下
dn: olcDatabase{1}monitor,cnconfig
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.basegidNumber0uidNumber0,cnpeercred,cnexternal,cnauth read by dn.basecnManager,dcsichuan,dccmcc read by * nonedn: olcDatabase{2}hdb,cnconfig
changetype: modify
replace: olcSuffix
olcSuffix: dcsichuan,dccmccdn: olcDatabase{2}hdb,cnconfig
changetype: modify
replace: olcRootDN
olcRootDN: cnManager,dcsichuan,dccmccdn: olcDatabase{2}hdb,cnconfig
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}7j4lLAvS1mToAZpIyefQdTYqCvL0hiVadn: olcDatabase{2}hdb,cnconfig
changetype: modify
add: olcAccess
olcAccess: {0}to attrsuserPassword,shadowLastChange by dncnManager,dcsichuan,dccmcc write by anonymous auth by self write by * none
olcAccess: {1}to dn.base by * read
olcAccess: {2}to * by dncnManager,dcsichuan,dccmcc write by * read执行
ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif创建组织单元
在dcsichuan,dccmcc组织下 创建Account 和Role两个组织单元
新增cmcc.ldif文件
vim cmcc.ldifdn: dcsichuan,dccmcc
objectClass: domain
objectClass: top
o: cmcc
dc: sichuandn: ouAccount,dcsichuan,dccmcc
objectClass: organizationalUnit
ou: Account
description: account for cmccdn: ouRole,dcsichuan,dccmcc
objectClass: organizationalUnit
ou: Role
description: role for cmcc
执行命令添加配置, 这里要注意修改域名为自己配置的域名然后需要输入上面我们的密码123456
ldapadd -x -D cnManager,dcsichuan,dccmcc -W -f cmcc.ldif2schema自定义格式
schema是一个标准定义了ldap的对象和属性也就是ldap能够存储什么数据数据有什么属性等。
/etc/openldap/slapd.d/cnconfig/cnschema/文件夹保存了运行使用的schema文件我们需要生成cmcc.schema放进来。
由于ldap中的对象不满足现有需求需要自定义对象和属性。 创建两个对象cmcc-Account和cmcc-Role cmcc-Account对象包含UidaccPassword accRole , accstatus , accReserve1 , accReserve2 accReserveList1 , accReserveList2属性 cmcc-Role对象包含roleName roleDesc accReserve1 accReserve2 accReserveList1 accReserveList2属性
创建cmcc.schema文件
vim cmcc.schemaattributetype ( 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 caseIgnoreMatchSUBSTR 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.confinclude /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/cnconfig/cnschema/
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中是否存在。
登陆界面 组织结构