我最近使用OpenLDAP设置了集中authentication系统。 现在,我需要扩展在数据库中定义的用户,以包含一个新的对象类,其中包含一些有关它们的安全相关数据。 我如何修改现有的条目来添加这个新的对象类? 我对LDAP相当陌生,所以如果我设法问一个愚蠢的问题,不要咬我的头:P谢谢!
您可以运行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
OpenLdap架构和ObjectClass很容易扩展。 如果有需要的对象(位于debian文件系统上的是/ etc / ldap / schema),请查看捆绑的模式,
在你可以修改你的ldap实体并将它们附加到新的objectClass(以及扩展名,新的属性types)之后。
如果你想build立你自己的属性types和/或你自己的objectClass,你需要请求一个OID对象号( OID注册 )。
然后按照这个模式:
objectIdentifier YOUR_OID <IANA NUMBER> objectIdentifier YOUR_OBJECTCLASS YOUR_OID:1 objectIdentifier YOUR_ATTRIBUTETYPE YOUR_OID:2
然后定义你的属性types:
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之后的数字必须是唯一的(即:每个属性都有一个数字)
有关参考,请查看Open LDAP Schema Specification
这里是一个示例LDIF文件添加objectClass posixAccount到现有的条目uid=testuser,ou=people,dc=example,dc=com例如objectClass inetOrgPerson :
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
-分开添加块很重要。 必须确保将所有必要的属性(对于posixAccount homeDirectory , uidNumber , gidNumber )添加到同一个文件中。
LDIF文件可以添加例如
ldapmodify -x -D 'cn=root,dc=example,dc=com' -W -f filename.ldif