在openLDAP中创建新的ObjectClass和属性

在openLDAP中创建新的ObjectClass和属性,ldap,schema,openldap,Ldap,Schema,Openldap,我是LDAP新手,搜索添加简单的objectClass和属性,但仍然得到一个错误, 我想要一个具有简单字符串属性“functionId”的对象“adminFunc”,因此我将adminFunc.schema和adminFunc.ldif复制到schema文件夹: 管理函数模式: objectidentifier adminFuncSchema 1.3.6.1.4.1.X.Y objectidentifier funcAttrs adminFuncSchema:3 objectidentifier

我是LDAP新手,搜索添加简单的objectClass和属性,但仍然得到一个错误, 我想要一个具有简单字符串属性“functionId”的对象“adminFunc”,因此我将adminFunc.schema和adminFunc.ldif复制到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:(通过运行slaptest自动生成)

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

正在尝试运行此命令以创建新的呼叫中心对象:

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

但找不到我的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中创建新对象和属性的步骤:

  • 创建模式文件,例如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 )
    
    #对象类定义

    objectclass ( 1.3.6.1.4.1.42.2.27.4.2.1
            NAME 'SampleObject'
            DESC 'Sample object'
            SUP top
            STRUCTURAL
            MUST ( cn $ sampleAttribute ) )
    
  • 创建conf文件,例如test.conf
  • include/home/test.schema

  • 在服务器上,运行:
  • #创建目录

    mkdir testdir
    
    #运行测试

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

    我将我的重命名为sample.ldif

  • 将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
    

    我知道这是一个老问题,但我想提一提,因为我在2019年才发现这一点,并感到困惑。OpenLDAP的现代版本使用联机更改(OLC),这可能是您应该使用的,也可能是您想要使用的。
    slaptest -f test.conf -F testdir
    
    # 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
    
    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