如何修改/向 OpenLDAP 中的条目添加新的 objectClass

如何修改/向 OpenLDAP 中的条目添加新的 objectClass

我最近使用 OpenLDAP 设置了集中式身份验证系统。现在我需要扩展数据库中定义的用户,以包含一个包含一些与用户安全相关的数据的新对象类。我该如何修改现有条目以添加这个新对象类?我对 LDAP 还很陌生,所以如果我问了一个愚蠢的问题,请不要责怪我 :P 谢谢!

答案1

您可以运行ldapmodify来修改一个或多个条目,只需向程序提供凭据和包含您要执行的所有更改的文件即可

举个例子(直接取自 openldap 手册),如果你的文件包含这个,它将添加/修改所有这些字段

dn: uid=john.doe,ou=People,dc=example,dc=com
changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: john.doe
givenName: John
sn: Doe
cn: John Doe
mail: [email protected]
userPassword: password

答案2

以下是添加 objectClass 的示例 LDIF 文件posix帐户到现有条目uid=testuser,ou=people,dc=example,dc=com,例如 objectClassinetOrgPerson

dn: uid=testuser,ou=people,dc=example,dc=com
changetype: modify
add: objectClass
objectClass: posixAccount
-
add: homeDirectory
homeDirectory: /home/testuser
-
add: uidNumber
uidNumber: 1000
-
add: gidNumber
gidNumber: 1000

-分开很重要添加块。必须确保所有必要的属性(例如posix帐户 homeDirectory, uidNumber, gidNumber)添加到同一文件中。

LDIF 文件可以通过以下方式添加:

ldapmodify -x -D 'cn=root,dc=example,dc=com' -W -f filename.ldif

答案3

OpenLdap Schema 和 ObjectClass 易于扩展。查看捆绑模式中是否有您需要的对象(位于 Debian 文件系统上的 /etc/ldap/schema)

之后,您可以修改您的 ldap 实体并将新的 objectClass(以及扩展后的新的属性类型)附加到它们。

如果您想构建自己的属性类型和/或自己的对象类,您需要请求一个 OID 对象编号 (OID 注册)。

然后按照以下模式进行:

objectIdentifier YOUR_OID <IANA NUMBER>
objectIdentifier YOUR_OBJECTCLASS YOUR_OID:1
objectIdentifier YOUR_ATTRIBUTETYPE YOUR_OID:2

然后定义您的属性类型:

attributetype( YOUR_ATTRIBUTETYPE:1 NAME "your attribute name"
    DESC "quick description"
    EQUALITY typoofequality
    SYNTAX valid syntax

以及你的对象类:

objectclass(YOUR_OBJECTCLASSS:1 NAME "your objectclass name"
    DESC "quick description"
    SUP top #or another objectclass inheritence
    MUST (list of must attributes, separated by "$")
    MAY (list of may attributes, separated by "$") )

YOUR_ATTRIBUTETYPE/YOUR_OBJECTCLASS 后面的数字必须是唯一的(即:每个属性一个数字)

作为参考,请查看开放 LDAP 架构规范

相关内容