跳过导航链接 | |
退出打印视图 | |
系统管理指南:命名和目录服务(DNS、NIS 和 LDAP) Oracle Solaris 10 8/11 Information Library (简体中文) |
4. 网络信息服务 (Network Information Service, NIS)(概述)
11. 为使用 LDAP 客户机设置 Sun Java System Directory Server(任务)
nisplusLDAPdatabaseIdMapping 属性
nisplusLDAPattributeFromColumn 属性
nisplusLDAPcolumnFromAttribute 属性
配置 Sun Java System Directory Server
client_info 和 timezone 表(从 NIS+ 转换为 LDAP)
NIS+ 服务器守护进程 rpc.nisd 将 NIS+ 数据 以专用文件格式存储到 /var/nis/data 目录中。尽管完全有可能使 NIS+ 数据与 LDAP 同步,但这样的同步以前需要外部代理。不过,现在使用 NIS+ 守护进程,可以将 LDAP 服务器用作 NIS+ 数据的数据仓库。由于这样一来可以使 NIS+ 客户机和 LDAP 客户机共享相同的命名服务信息,因此更易于从使用 NIS+ 作为主命名服务转换为使用 LDAP 作为主命名服务。
缺省情况下,rpc.nisd 守护进程继续按照以前的方式工作,即仅依赖 /var/nis/data NIS+ 数据库。如果需要的话,系统管理员可以选择使用 LDAP 服务器作为 NIS+ 数据库任何子集的权威数据仓库。此时,/var/nis/data 文件充当 rpc.nisd 守护进程的高速缓存,这样可以减少 LDAP 查找的通信流量,而且如果 LDAP 服务器暂时不可用,rpc.nisd 还可以继续工作。除了可以在 NIS+ 和 LDAP 之间保持持续同步外,还可以将 NIS+ 数据上载到 LDAP 或者将 LDAP 数据下载到 NIS+。
将数据映射到 LDAP 或从 LDAP 映射数据由灵活的配置文件语法来控制。模板映射文件 /var/nis/NIS+LDAPmapping.template 包含所有的标准 NIS+ 表(client_info.org_dir 和 timezone.org_dir 除外),对于大多数 NIS+ 安装来说,无需更改该文件或只需进行很小的改动即可。(有关 client_info.org_dir 和 timezone.org_dir 的信息,请参见client_info 和 timezone 表(从 NIS+ 转换为 LDAP)。)除了提供 NIS+ 数据在 LDAP 目录信息树 (Directory Information Tree, DIT) 中的位置以外,该映射文件还允许为源自 LDAP 的 NIS+ 数据提供生存时间 (time-to-live, TTL)。虽然通常情况下 NIS+ 列的值和 LDAP 属性值之间是一一对应的关系,但是该映射文件还可以用于维护更复杂的关系。
/etc/default/rpc.nisd 文件用于选择 LDAP 服务器和验证,并控制 rpc.nisd 的一些常规行为。请参见 rpc.nisd(4)。映射的详细信息在 /var/nis/NIS+LDAPmapping 文件中指定。有关更多信息,请参见 NIS+LDAPmapping(4)。映射文件的名称可以通过编辑 /lib/svc/method/nisplus 文件来更改。有关更多信息,请参见NIS+ 到 LDAP 转换工具和服务管理工具。
本章使用了以下术语:
Container(容器)
容器是指 LDAP DIT 中用于存储所有相关项的位置。例如,用户帐户信息通常存储在 ou=People 容器中,而主机地址信息可以存储在 ou=Hosts 容器中。
Netname(网络名)
网络名是安全 RPC(用户或计算机)中可被验证的实体。
Mapping(映射)
映射是指 NIS+ 对象和 LDAP 项之间的关系。例如,passwd.org_dir NIS+ 表中 name 列的数据(如帐户的用户名)与 ou=People 容器中 posixAccount 对象类的 LDAP uid 属性相对应。该配置可以在 name 列和 uid 属性之间建立映射。还可以理解为将 name 列映射到 uid 属性(反之亦然)。
Principal(主体)
主体是指 NIS+(用户或计算机)中可被验证的实体。通常,网络名和主体名之间存在一一对应关系。
/etc/default/rpc.nisd
此文件包含有关 LDAP 服务器和验证、NIS+ 基本域、LDAP 缺省搜索库、异常处理和常规 rpc.nisd 配置(无论 LDAP 映射是否有效,都将应用此配置)的信息。
/var/nis/NIS+LDAPmapping
此文件包含有关在 NIS+ 数据和 LDAP 之间相互映射的信息。模板文件 (/var/nis/NIS+LDAPmapping.template) 包含除 client_info.org_dir 和 timezone.org_dir 以外的所有标准 NIS+ 对象。请参见client_info 和 timezone 表(从 NIS+ 转换为 LDAP)和 NIS+LDAPmapping(4)。
配置是通过为预定义的属性赋值来完成的。除了配置文件,配置属性还可以从 LDAP 读取(请参见将配置信息存储到 LDAP 中),或者在 rpc.nisd 命令行中通过 -x 选项指定。如果在多个位置中指定了同一个属性,则优先顺序(从高到低)将如下所示:
rpc.nisd -x 选项
配置文件
LDAP
与 NIS+ 到 LDAP 的转换相关联的大多数命令行管理任务都由服务管理工具来管理。有关 SMF 的概述,请参见《系统管理指南:基本管理》中的第 18 章 "管理服务(概述)"。有关更多详细信息,另请参阅 svcadm(1M) 和 svcs(1) 手册页。
使用 svcadm 命令可以对 NIS+ 到 LDAP 转换服务执行启用、禁用或重新启动等管理操作。
提示 - 使用 -t 选项暂时禁用服务可为服务配置提供一些保护。如果禁用服务时使用了 -t 选项,则服务在重新引导后将恢复原始设置。如果禁用服务时未使用 -t,则服务在重新引导后仍将保持禁用状态。
NIS+ 故障管理资源标识符 (Fault Managed Resource Identifier, FMRI) 是 svc:/network/rpc/nisplus: <instance>。LDAP 客户机服务的 FMRI 是 svc:/network/ldap/client: <instance>。
可以使用 svcs 命令来查询 NIS+ 的状态。
svcs 命令和输出示例。
# svcs \*nisplus\* STATE STIME FMRI online Sep_01 svc:/network/rpc/nisplus:default
svcs -l 命令和输出示例。要获得如下所示的输出,必须在 FMRI 中使用实例名称。
# svcs -l network/rpc/nisplus:default fmri svc:/network/rpc/nisplus:default enabled false state disabled next_state none restarter svc:/system/svc/restarter:default dependency require_all/none svc:/network/rpc/keyserv (online)
使用 ps 命令可检查守护进程是否存在。
# ps -e | grep rpc.nisd root 23320 1 0 Aug 27 ? 16:30 ./ns-slapd -D \ /usr/iplanet/ds5/slapd-lastrev -i /usr/iplanet/ds5/slapd-lastrev/ root 25367 25353 0 15:35:19 pts/1 0:00 grep slapd
注 - 不要将 -f 选项与 ps 结合使用,因为此选项会尝试将用户 ID 转换为名称,而这将导致更多命名服务查找可能无法成功。
通常,/usr/sbin/rpc.nisd 守护进程使用 svcadm 命令进行管理。但是,当使用 -x nisplusLDAPinitialUpdateOnly=yes 调用 rpc.nisd 时,rpc.nisd 会执行指定的初始更新操作,然后再退出。即,rpc.nisd 不会守护进程化。服务管理工具不应当与 -x nisplusLDAPinitialUpdateOnly=yes 结合使用。SMF 可以在您希望启动、停止或重新启动 rpc.nisd 守护进程的其他任何时间使用。
以下示例说明如何将 rpc.nisd 与 -x nisplusLDAPinitialUpdateOnly=yes 结合使用。
# /usr/sbin/rpc.nisd -m mappingfile \ -x nisplusLDAPinitialUpdateAction=from_ldap \ -x nisplusLDAPinitialUpdateOnly=yes
如果要在用服务管理工具调用 rpc.nisd 守护进程时包含特定选项,可以使用 svcprop 命令或者修改 /lib/svc/method/nisplus 文件。有关使用 svcprop 命令的更多信息,请参见svcprop(1) 手册页。以下过程说明如何修改 /lib/svc/method/nisplus 文件。
角色包含授权和具有一定特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的第 9 章 "使用基于角色的访问控制(任务)"。
# svcadm disable network/rpc/nisplus:default
使用所选的编辑器。
将如下内容:
if [ -d /var/nis/data -o -d /var/nis/$hostname ]; then /usr/sbin/rpc.nisd || exit $
更改为:
if [ -d /var/nis/data -o -d /var/nis/$hostname ]; then /usr/sbin/rpc.nisd -Y -B || exit $?
在本示例中,向 rpc.nisd 中添加了 -Y 和 -B 选项,因此这两个选项将在系统启动时自动实现。
# svcadm enable network/rpc/nisplus:default
根据 NIS+/LDAP 映射的配置方式,您可能希望创建许多新的 LDAP 属性和对象类。以下示例说明如何通过指定 LDIF 数据来完成此操作,这些数据可用作 ldapadd 命令的输入。创建一个包含 LDIF 数据的文件,然后调用ldapadd(1)。
# ldapadd -D bind-DN -f ldif -file
此方法适用于 Sun Java System Directory Server,还可能适用于其他 LDAP 服务器。
注 - 除了 defaultSearchBase、preferredServerList 和 authenticationMethod 属性以及 SYNTAX 规范,本章中使用的对象标识符 (object identifier, OID) 仅用于说明。由于尚未指定任何正式的 OID,因此您可以随意使用任何适当的 OID。