在 openLDAP 中创建新的对象类和属性

Creating a new ObjectClass and Attribute in openLDAP

我是 LDAP 的新手,搜索过添加简单的对象类和属性,但仍然出现错误, 我想要一个具有简单字符串属性 'functionId' 的对象 'adminFunc',所以我将 adminFunc.schema 和 adminFunc.ldif 复制到架构文件夹:

adminFunc.schema:

objectidentifier adminFuncSchema 1.3.6.1.4.1.X.Y
objectidentifier funcAttrs adminFuncSchema:3
objectidentifier funcClass adminFuncSchema:4

attributetype ( funcAttrs:2
  NAME 'functionId'
  EQUALITY caseIgnoreMatch
  SUBSTR caseIgnoreSubstringsMatch
  ORDERING caseIgnoreOrderingMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} )  

objectclass ( 
  funcClass:1
  NAME 'adminFunc'
  DESC 'Admin permission'
  SUP ( top ) AUXILIARY
  MAY functionId )

adminFunc.ldif:(由运行ning slaptest自动生成)

dn: cn=adminFunc
objectClass: olcSchemaConfig
cn: adminFunc
olcObjectIdentifier: adminFuncSchema 1.3.6.1.4.1.X.Y
olcObjectIdentifier: funcAttrs adminFuncSchema:3
olcObjectIdentifier: funcClass adminFuncSchema:4
olcAttributeTypes: ( funcAttrs:2 NAME 'functionId' EQUALITY caseIgnoreMat
 ch ORDERING caseIgnoreOrderingMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
  1.3.6.1.4.1.1466.115.121.1.15{255} )
olcObjectClasses: ( funcClass:1 NAME 'adminFunc' DESC 'Admin permission' 
 SUP top AUXILIARY MAY functionId )
structuralObjectClass: olcSchemaConfig
entryUUID: c43389f4-0bfb-1037-959b-c9dc976d6fc3
creatorsName: cn=config
createTimestamp: 20170802182555Z
entryCSN: 20170802182555.047279Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20170802182555Z

modify.ldif 我的 dn 是 ou=Local,ou=SV,dc=example,dc=com

正在尝试 运行 此命令创建一个新的 Call_Center 对象:

ldapmodify -x -W -D "cn=ldapadmin,dc=example,dc=com" -f modify.ldif

dn: cn=Call_Center,ou=Local,ou=SV,dc=example,dc=com
changetype: add
objectClass: top
objectClass: adminFunc
cn: Call_Center
functionId: 1010

但是找不到我的 adminFunc 对象:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=Call_Center,ou=Local,ou=SV,dc=example,dc=com"
ldap_add: Invalid syntax (21)
       additional info: objectClass: value #1 invalid per syntax

不确定我错过了什么。

谢谢

这些是我在 openldap 中创建新对象和属性的步骤:

  1. 创建模式文件,例如。 test.schema

#属性定义

attributetype ( 1.3.6.1.4.1.42.2.27.4.1.6
        NAME 'sampleAttribute'
        DESC 'Sample Attribute'
        EQUALITY caseExactMatch
        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
        SINGLE-VALUE )

#对象Class定义

objectclass ( 1.3.6.1.4.1.42.2.27.4.2.1
        NAME 'SampleObject'
        DESC 'Sample object'
        SUP top
        STRUCTURAL
        MUST ( cn $ sampleAttribute ) )
  1. 创建配置文件,例如。 test.conf

包括/home/test.schema

  1. 在服务器上,运行:

#创建目录

mkdir testdir

#运行 拍打测试

slaptest -f test.conf -F testdir

生成的文件将是 testdir/cn=config/cn=schema/cn={0}test.ldif 并且看起来像这样(经过一些手动编辑后):

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 f74b018a
dn: cn=sample,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sample
olcAttributeTypes: {0}( 1.3.6.1.4.1.42.2.27.4.1.6 NAME 'sampleAttribute'
  DESC 'Sample Attribute' EQUALITY caseExactMatch SYNTAX 1.3.6.1.4.1.1466.115.
 121.1.15 SINGLE-VALUE )
olcObjectClasses: {0}( 1.3.6.1.4.1.42.2.27.4.2.1 NAME 'SampleObject' DESC 'Sam
 ple object' SUP top STRUCTURAL MUST ( cn $ sampleAttribute ) )
structuralObjectClass: olcSchemaConfig
entryUUID: 4a10b3ec-4aca-1036-997a-3fcaae1517d7
creatorsName: cn=config
createTimestamp: 20161129215530Z
entryCSN: 20161129215530.381328Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20161129215530Z

我将我的重命名为 sample.ldif。

  1. 将 ldif 添加到架构

在服务器上,运行:

service slapd stop
slapadd -l sample.ldif -n 0 
#to populate the config database slapd-config(5), use -n 0 as it is always the first database.
service slapd start