我最近使用 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 架构规范