跳过导航链接 | |
退出打印视图 | |
系统管理指南:命名和目录服务(DNS、NIS 和 LDAP) Oracle Solaris 10 8/11 Information Library (简体中文) |
4. 网络信息服务 (Network Information Service, NIS)(概述)
11. 为使用 LDAP 客户机设置 Sun Java System Directory Server(任务)
名称服务转换器是一个名为 nsswitch.conf 的文件,用于控制客户机或应用程序获取网络信息的方式。名称服务转换器由调用任意 getXbyY() 接口(如以下接口)的客户机应用程序使用。
每台计算机的 /etc 目录中都有一个转换器文件。该文件中的每一行都标识一条特定类型的网络信息(如主机、口令和组),后跟该信息的一个或多个位置。
客户机可以从转换器的一个或多个源获取命名信息。例如,NIS 客户机可以从 NIS 映射获取其主机信息,从本地 /etc 文件获取其口令信息。另外,客户机可以指定转换器在哪些条件下必须使用每个源。请参见表 2-1。
在安装过程中,Solaris 系统会自动将 nsswitch.conf 文件装入每台计算机的/etc 目录中。对于 LDAP、NIS、NIS+ 或文件,转换器文件的四个备用(模板)版本也将装入 /etc 中。请参见nsswitch.conf 模板文件。
这四个文件是备用的缺省转换器文件。每个文件旨在处理不同的主命名服务:/etc 文件、NIS、NIS+ 或 LDAP。将 Solaris 软件首次安装到计算机上时,安装程序会选择计算机的缺省命名服务:NIS+、NIS、本地文件或 LDAP。在安装过程中,会将对应的模板文件复制到 nsswitch.conf 中。例如,对于使用 LDAP 的客户机,会在安装过程中将 nsswitch.ldap 复制到 nsswitch.conf 中。除非您拥有特殊的名称空间,否则复制到 nsswitch.conf 中的缺省模板文件应该能够满足正常的操作。
系统没有为 DNS 提供缺省文件,但是可以编辑上述任何文件以使用 DNS。有关更多信息,请参见DNS 和 Internet 访问。
如果要稍后更改计算机的主命名服务,应将适当的备用转换器文件复制到 nsswitch.conf。请参见nsswitch.conf 模板文件。您也可以通过编辑 /etc/nsswitch.conf 文件的相应行来更改客户机使用的特定类型网络信息的源。下面的内容介绍语法,其他说明在如何修改名称服务转换器中予以介绍。
nsswitch.conf 文件实质上就是一个列表,其中包含 16 种信息和 getXXbyYY() 例程在其中搜索这些信息的源。下面是这 16 种信息(并非必须按此顺序)。
aliases
bootparams
ethers
group
hosts
ipnodes
netgroup
netmasks
networks
passwd(包括 shadow 信息)
protocols
publickey
rpc
services
automount
sendmailvars
下表说明了可以列在上述信息类型的转换器文件中的源的种类。
表 2-1 转换器文件中的信息源
|
单个源。如果某个信息类型只有一个源(如 nisplus),使用转换器的例程将只在该源中搜索信息。如果该例程找到了此信息,将返回 success 状态消息。如果该例程未找到此信息,则会停止搜索并返回不同的状态消息。不同的例程处理状态消息的方式也不同。
多个源。如果表中包含给定信息类型的多个源,则转换器会指示此例程在列出的第一个源中搜索。如果该例程找到了此信息,将返回 success 状态消息。如果该例程未在第一个源中找到此信息,将尝试在下一个源中进行搜索。该例程将依次搜索所有的源,直到找到此信息或者该例程由于指定了 return 而停止。如果在搜索了列出的所有源之后仍未找到此信息,该例程将停止搜索并返回 non-success 状态消息。
如果某例程找到了此信息,则该例程返回 success 状态消息。如果该例程未找到此信息,则会返回下面的三个错误状态消息之一。下表列出了可能的状态消息。
表 2-2 转换器搜索状态消息
|
可以指示转换器用下表中显示的两个操作之一来响应状态消息。
表 2-3 对转换器状态消息的响应
|
nsswitch.conf 文件状态消息和操作选项一起决定例程在每个步骤执行的操作。状态和操作的组合构成了搜索条件。
对于每个源来说,转换器的缺省搜索条件完全相同。有关上面列出的状态消息的说明,请参见以下内容。
UNAVAIL=continue。转至下一个 nsswitch.conf 文件源并继续搜索。如果该源是最后一个源或唯一的源,将返回 NOTFOUND 状态。
NOTFOUND=continue。转至下一个 nsswitch.conf 文件源并继续搜索。如果该源是最后一个源或唯一的源,将返回 NOTFOUND 状态。
TRYAGAIN=continue。转至下一个 nsswitch.conf 文件源并继续搜索。如果该源是最后一个源或唯一的源,将返回 NOTFOUND 状态。
可以通过使用上面显示的 STATUS=action 语法明确指定某个其他条件来更改缺省搜索条件。例如,NOTFOUND 条件的缺省操作是继续搜索下一个源。例如,要指定 networks 在遇到 NOTFOUND 条件时停止搜索,请编辑转换器文件的 networks 行。该行应如下所示。
networks: nis [NOTFOUND=return] files
networks: nis [NOTFOUND=return] files 行可以为 NOTFOUND 状态指定非缺省条件。非缺省条件由方括号分隔。
在本示例中,搜索条件按如下方式工作:
如果 networks 映射可用且包含需要的信息,搜索例程将返回 SUCCESS 状态消息。
如果 networks 映射不可用,搜索例程将返回 UNAVAIL 状态消息。缺省情况下,搜索例程会继续搜索相应的 /etc 文件。
如果 networks 映射可用且已找到,但是不包含需要的信息,搜索例程将返回 NOTFOUND 消息。但是,搜索例程将停止搜索,而不会继续搜索相应的 /etc 文件(这是缺省行为)。
如果 networks 映射正忙,搜索例程将返回 TRYAGAIN 状态消息,而且在缺省情况下会继续搜索相应的 /etc 文件。
注 - 在 nsswitch.conf 文件中的查找是按照项的列出顺序进行的。但是,口令更新将以相反的顺序进行,除非使用 passwd - r repository 命令另行指定了更新顺序。有关更多信息,请参见转换器文件和口令信息。
客户机库例程中包含经过编译的缺省项,如果 nsswitch.conf 文件中缺少某项或者该项语法有误,则会使用这些缺省项。这些项与转换器文件的缺省值相同。
名称服务转换器假设表名和源名的拼写正确无误。如果表名或源名的拼写有误,转换器将使用缺省值。
auto_home 和 auto_master 表和映射的转换器搜索条件组合成一个名为 automount 的类别。
timezone 表不使用转换器,因此该表不包含在转换器文件的列表中。
nsswitch.conf 文件中任何以注释字符(#)开头的行都被解释为注释行。搜索该文件的例程会忽略注释行。
注释标记前面的字符会由搜索 nsswitch.conf 文件的例程进行解释。注释标记右侧的字符会被解释为注释并被忽略。
表 2-4 转换器文件的注释示例
|
只有启动了密钥服务器后,密钥服务器才会读取名称服务转换器配置文件中的 publickey 项。如果更改转换器配置文件,则只有重新启动密钥服务器后,才会在密钥服务器上注册所做的更改。