使用架构映射时一定要谨慎,而且必须采用一致的方式。应确保所映射属性的语法与其映射到的属性的语法一致。换而言之,应确保单值属性映射到单值属性,属性的语法保持一致,并且映射对象类应该具有正确的强制性属性(可能是映射属性)。
如上所述,缺省情况下,LDAP 名称服务要求以特定方式构造 DIT。如果需要,可以指示 Solaris LDAP 名称服务在 DIT 的非缺省位置中进行搜索。另外,还可以指定用不同的属性和对象类来代替缺省架构所指定的属性和对象类。有关缺省过滤器的列表,请参见LDAP 名称服务使用的缺省过滤器。
serviceSearchDescriptor 属性 定义 LDAP 名称服务客户机搜索特定服务信息的方式和位置。serviceSearchDescriptor 包含一个服务名称,其后跟一个或多个用分号分隔的基 (base)-范围 (scope) -过滤器 (filter) 三元参数。 使用这些基 (base)-范围 (scope) -过滤器 (filter) 三元参数,可以定义仅搜索特定服务并按顺序进行搜索。 如果针对给定服务指定了多个基 (base)-范围 (scope) -过滤器 (filter),则该服务查找特定项时,将使用指定的范围和过滤器在每个基本容器中进行搜索。
使用 SSD 时,不会在缺省位置中搜索服务(数据库),除非该 SSD 中包括缺省位置。 如果针对某个服务指定了多个 SSD,将会产生不可预测的行为。
在以下示例中,Solaris LDAP 名称服务客户机会依次在 ou=west,dc=example,dc=com 和 ou=east,dc=example,dc=com 中执行一级搜索,以查找 passwd 服务。要查找用户 username 的 passwd 数据,可以针对每个 BaseDN 使用缺省的 LDAP 过滤器 (&(objectClass=posixAccount)(uid=username))。
serviceSearchDescriptor: passwd:ou=west,dc=example,dc=com;ou=east, dc=example,dc=com |
在以下示例中,Solaris LDAP 名称服务客户机将在 ou=west,dc=example,dc=com 中执行子树搜索以查找 passwd 服务。要查找用户 username 的 passwd 数据,可以使用 LDAP 过滤器 (&(fulltimeEmployee=TRUE)(uid=username)) 搜索 ou=west,dc=example,dc=com 子树。
serviceSearchDescriptor: passwd:ou=west,dc=example, dc=com?sub?fulltimeEmployee=TRUE |
还可以将多个容器与一个特定的服务类型关联。在以下示例中,服务搜索描述符指定在三个容器中搜索口令项。
请注意,在下面的示例中,SSD 中的结尾 ',' 表示 defaultSearchBase 将附加在相对基本容器之后。
defaultSearchBase: dc=example,dc=com serviceSearchDescriptor: \ passwd:ou=myuser,;ou=newuser,;ou=extuser,dc=example,dc=com |
使用 Solaris LDAP 名称服务时, 可以重新映射其任何服务的一个或多个属性名。(Solaris LDAP 客户机使用第 14 章,LDAP 一般参考(参考)中列出的已知属性。) 如果映射一个属性,则必须确保该属性与初始属性具有相同的含义和语法。请注意,映射 userPassword 属性可能会产生问题。
希望映射现有目录服务器中的属性
如果用户名只存在大小写差异,则必须将忽略大小写的 uid 属性映射到不忽略大小写的属性。
此属性的格式为 service:attribute-name=mapped-attribute-name。
如果要针对给定服务映射多个属性,则可以定义多个 attributeMap 属性。
在以下示例中,将 uid 和 homeDirectory 属性用于 passwd 服务时便会使用 employeeName 和 home 属性。
attributeMap: passwd:uid=employeeName attributeMap: passwd:homeDirectory=home |
但也会出现以下特殊情况:将 passwd 服务的 gecos 属性映射到多个属性。下面是一个示例:
attributemap: gecos=cn sn title |
以上示例将 gecos 值映射到用空格分隔的 cn、sn 和 title 属性值的列表。
使用 Solaris LDAP 名称服务时, 可以重新映射其任何服务的对象类。如果要针对给定服务映射多个对象类,则可以定义多个 objectclassMap 属性。在以下示例中,使用 posixAccount 对象类时便会使用 myUnixAccount 对象类。
objectclassMap: passwd:posixAccount=myUnixAccount |