在 OpenLDAP 中创建操作属性时出错

Error on operational attribute creation in OpenLDAP

实际上,在我的 LDAP 中,我有一个用 groupOfNames 对象填充的组和一个用 groupOfMembers 对象填充的角色。

我还配置了 memberOf 覆盖以检索用户在 memberof 属性中所属的 groupOfMembers(即角色)。

我的目标是还有一个属性 memberOfGroup,其中包含用户所属的 groupOfNames(即组)列表。

为了做到这一点,我创建了一个新模式,其中包含 memberOfGroup 属性的属性类型定义:

cn={14}memberOfGroup,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: {14}memberOfGroup
olcAttributeTypes: {0}( 1.3.6.1.4.1.51127.3.2.2.3
  NAME 'memberOfGroup'
  DESC 'The groups the user belong to'
  EQUALITY distinguishedNameMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )

我遇到的问题是,当我尝试将其设置为操作属性时:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f test.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn={14}memberOfGroup,cn=schema,cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)
    additional info: olcAttributeTypes: "1.3.6.1.4.1.51127.3.2.2.3" is operational

与 test.ldif :

dn: cn={14}memberOfGroup,cn=schema,cn=config
changetype: modify
replace: olcAttributeTypes
olcAttributeTypes: ( 1.3.6.1.4.1.51127.3.2.2.3
  NAME 'memberOfGroup'
  DESC 'The groups the user belong to'
  EQUALITY distinguishedNameMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 NO-USER-MODIFICATION
  USAGE DSAOperation )

同时,我还定义了第二个 memberOf overlay。

第一个角色(工作):

dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfMembers
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf

第二组(无效):

dn: olcOverlay={1}memberof,olcDatabase={1}mdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {1}memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOfGroup

谁能解释一下操作属性的创建有什么问题以及我遇到的错误?

在 ldif 中你有 USAGE DSAOperation

操作属性只能由目录本身使用,不能由用户添加或修改。 OpenLDAP 模块 memberof 在将用户添加到某个组时自动创建它(并且在删除用户时也会删除)。

如果您想要一些自定义属性来跟踪组成员身份,那么您可以创建一个简单的属性(不可操作),但在这种情况下,ldap 服务器不会自动更新用户的成员身份。