本部分介绍 Solaris OS 的名称和目录服务。此外还介绍了 nsswitch.conf 文件,该文件用于协调不同服务的使用。
本章概述了 Solaris 中使用的名称和目录服务。本章还简要介绍了 DNS、NIS 和 LDAP 名称服务。有关 NIS+ 的详细信息,请参见System Administration Guide: Naming and Directory Services (NIS+)。
名称服务在一个中心位置存储信息,这样用户、计算机和应用程序便可通过网络进行通信。此信息包括:
计算机(主机)名和地址
用户名
口令
访问权限
组成员关系、打印机等
如果没有集中的名称服务,则每台计算机都必须单独保留一份此信息的副本。名称服务信息可以存储在文件、映射或数据库表中。 如果集中所有数据,管理会变得更加容易。
名称服务对任何计算网络都是至关重要的。名称服务还可提供多种功能,其中包括执行以下操作的功能。
将名称与对象关联(绑定)
将名称解析为对象
删除绑定
列出名称
重命名
网络信息服务使计算机可由普通名称而非数字地址来标识。这样可以简化通信,因为用户不需要记住并尝试输入那些繁琐的地址(例如 192.168.0.0)。
例如,假设有一个网络具有三台计算机,名称分别为 pine、elm 和 oak。pine 必须先知道 elm 或 oak 的数字网络地址,才能向其发送消息。因此,pine 将保留一个文件(/etc/hosts 或 /etc/inet/ipnodes),该文件存储网络中每台计算机(包括 pine 本身)的网络地址。
类似地,为了使 elm 和 oak 与 pine 通信或彼此通信,这些计算机也必须保留类似的文件。
除了存储地址外,计算机还存储安全信息、邮件数据、网络服务信息等。 随着网络提供的服务越来越多,存储信息的列表会不断增大。因此,每台计算机都需要保留一整套与 /etc/hosts 或 /etc/inet/ipnodes 相似的文件。
网络信息服务在服务器中存储网络信息,任何计算机都可以查询该信息。
这些计算机称为服务器的客户机。下图显示客户机/服务器布局。每次网络信息发生变化时,管理员将只更新网络信息服务存储的信息,而不更新每个客户机的本地文件。这样做可以减少错误、客户机之间的不一致性以及任务的绝对工作量。
这种服务器向网络中的客户机提供集中服务的布局称为客户机/服务器计算。
尽管网络信息服务的主要用途是集中信息,但网络信息服务还可以简化网络名称。例如,假设您的公司设置了一个与 Internet 连接的网络。Internet 为您的网络指定了网络号 192.168.0.0 和域名 doc.com。公司有两个部门:销售和制造 (Manf),因此,其网络将划分为一个主网和两个子网(每个部门对应一个子网)。每个网络有自身的地址。
如上所述,每个部门可由网络地址来标识,但用名称服务提供的描述性名称来标识会更好。
可以无需输入 198.168.0.0 物理地址作为邮件或其他网络通信的地址,而是输入 doc 作为地址。可以无需输入 192.168.2.0 或 192.168.3.0物理地址作为邮件或其他网络通信的地址,而是输入 sales.doc 或 manf.doc 作为地址。
名称还比物理地址更灵活。因为物理网络通常不会改变,而公司组织可能会发生变动。
例如,假定有三台服务器(S1、S2 和 S3)支持 doc.com 网络。且其中两台服务器(S1 和 S3)支持客户机。
客户机 C1、C2 和 C3 将从服务器 S1 获取网络信息。客户机 C4、C5 和 C6 将从服务器 S3 获取信息。下表对生成的网络进行了汇总。该表是该网络的大致说明,与实际的网络信息映射并不相似。
表 1–1 docs.com 网络说明
网络地址 |
网络名称 |
服务器 |
客户机 |
---|---|---|---|
192.168.1.0 |
doc |
S1 |
|
192.168.2.0 |
sales.doc |
S2 |
C1、C2、C3 |
192.168.3.0 |
manf.doc |
S3 |
C4、C5、C6 |
现在,假设创建了第三个部门(测试部门),该部门从其他两个部门借入一些资源,但并未创建第三个子网。物理网络将不再与公司结构类似。
测试部门的流量将不具有自己的子网,但将在 192.168.2.0 与 192.168.3.0 之间拆分。但是,通过网络信息服务,测试部门流量可以具有自己的专用网络。
因此,当组织更改时,其网络信息服务可以按此处所示更改其映射。
现在,客户机 C1 和 C2 将从服务器 S2 中获取信息。C3、C4 和 C5 将从服务器 S3 中获取信息。
通过更改网络信息结构来适应组织中的后续更改,而不需要重新组织网络结构。
Solaris 平台可提供以下名称服务。
DNS,域名系统(请参见DNS 名称服务的说明)
/etc 文件,原始的 UNIX® 名称系统(请参见/etc 文件名称服务的说明)
NIS,网络信息服务(请参见NIS 名称服务的说明)
NIS+,网络信息服务扩充版本(请参见System Administration Guide: Naming and Directory Services (NIS+))
LDAP,轻量目录访问协议(请参见部件 IV, LDAP 名称服务的设置和管理 LDAP Naming Services Setup and Administration)
大多数现代网络都组合使用上述两种或更多种服务。使用多种服务时,这些服务将由第 2 章,名称服务转换器(概述)中讨论的 nsswitch.conf 文件来协调。
DNS 是 Internet 为 TCP/IP 网络提供的名称服务。开发 DNS 后,网络中的计算机可由普通名称而非 Internet 地址来标识。DNS 可在本地管理域中的主机与跨域边界的主机之间执行命名。
使用 DNS 的联网计算机的集合称为 DNS 名称空间。DNS 名称空间可以划分为域分层结构。DNS 域是一组计算机。每个域由两台或多台名称服务器支持,其中包括一台主服务器以及一台或多台辅助服务器。每台服务器都通过运行 in.named 守护进程来运行 DNS。在客户端,DNS 通过“解析程序”来实现。解析程序的功能是解析用户的查询。解析程序将查询名称服务器,然后名称服务器会返回请求的信息或对其他服务器的引用。
基于主机的原始 UNIX 名称系统是为独立的 UNIX 计算机开发的,后来修改为可用于网络。许多旧的 UNIX 操作系统和计算机仍在使用此系统,但是此系统并不适用于大型的复杂网络。
网络信息服务 (Network Information Service, NIS) 是独立于 DNS 开发的。DNS 通过使用计算机名代替数字 IP 地址来简化通信。NIS 的主要作用是通过对各种网络信息进行集中控制来更好地管理网络。NIS 存储有关网络、计算机名称和地址、用户、以及网络服务的信息。这种网络信息的集合被称为 NIS 名称空间。
NIS 名称空间信息存储在 NIS 映射中。NIS 映射旨在替换 UNIX /etc 文件以及其他配置文件。NIS 除了存储名称和地址外,还存储大量的其他信息。因此,NIS 名称空间存在大量映射。有关更多信息,请参见使用 NIS 映射。
NIS 使用与 DNS 类似的客户机/服务器布局。复制的 NIS 服务器可向 NIS 客户机提供服务。主要的服务器称为主服务器,为确保其可靠,主服务器还具有备份,即从属服务器。主服务器和从属服务器都使用 NIS 检索软件,并且都存储 NIS 映射。有关 NIS 体系结构和 NIS 管理的更多信息,请参见第 5 章,设置和配置 NIS 服务和第 6 章,管理 NIS(任务)。
网络信息服务扩充版本 (Network Information Service Plus, NIS+) 与NIS 相似,但具有更多功能。但是,NIS+ 不是 NIS 的扩展。
NIS+ 名称服务旨在符合组织的结构。与 NIS 不同,NIS+ 名称空间是动态的,因为可以进行更新并可随时由任何授权用户使更新生效。
通过 NIS+ 可将有关计算机地址的信息、安全信息、邮件信息、以太网接口和网络服务存储在一个集中位置。这种网络信息的配置称为 NIS+ 名称空间。
NIS+ 名称空间是分层的。NIS+ 名称空间在结构上与 UNIX 目录文件系统相似。通过这种分层结构可将 NIS+ 名称空间配置为符合组织的逻辑分层结构。名称空间的信息布局与其物理布局无关。因此,一个 NIS+ 名称空间可以划分为多个可独立管理的域。如果客户机具有适当的权限,则可以访问除了自身的域之外的域中的信息。
NIS+ 使用客户机/服务器模型来存储和访问 NIS+ 名称空间中包含的信息。每个域由一组服务器提供支持。主要的服务器称为主服务器。备份服务器称为辅助服务器。网络信息存储在内部 NIS+ 数据库的 16 个标准 NIS+ 表中。主服务器和辅助服务器都运行 NIS+ 服务器软件,并且都保留 NIS+ 表的副本。对主服务器中 NIS+ 数据所做的更改将自动以增量方式传播到辅助服务器。
NIS+ 包括一个复杂的安全系统,用来保护名称空间的结构及其信息。NIS+ 使用身份验证和授权来验证是否应执行客户机对信息的请求。身份验证确定信息请求者是否是网络中的有效用户。授权确定是否允许特定用户拥有或修改请求的信息。有关 NIS+ 安全的更详细说明,请参见System Administration Guide: Naming and Directory Services (NIS+)。
有关进行从 NIS+ 到 LDAP 的转换的信息,请参见第 16 章,从 NIS+ 转换为 LDAP。
Solaris 9 支持 LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)和 Sun Java System Directory Server(以前称为 Sun ONE Directory Server),以及其他 LDAP 目录服务器。
有关 LDAP 名称服务的更多信息,请参见第 8 章,LDAP 名称服务介绍(概述/参考)。
有关由 NIS 转换到 LDAP 或由 NIS+ 转换到 LDAP 的信息,请参见第 15 章,从 NIS 转换为 LDAP(概述/任务)或第 16 章,从 NIS+ 转换为 LDAP。
|
DNS |
NIS |
NIS+ |
LDAP |
---|---|---|---|---|
名称空间 |
分层 |
不分层 |
分层 |
分层 |
数据存储 |
文件/资源记录 |
包含 2 列的映射 |
包含多列的表 |
目录 [视情况而定] |
服务器名 |
主/从 |
主/从 |
根主/非根主;主/辅助;高速缓存/存根 |
主/副本 |
安全性 |
无 |
无(根或不包含任何内容) |
安全 RPC (AUTH_DH) 验证 |
SSL(视情况而定) |
传输 |
TCP/IP |
RPC |
RPC |
TCP/IP |
范围 |
全局 |
LAN |
LAN |
全局 |
本章介绍名称服务转换器。名称服务转换器可用于协调各个名称服务的使用。
名称服务转换器是一个名为 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(包括阴影信息)
protocols
publickey
rpc
services
automount
sendmailvars
下表说明了可以列在上述信息类型的转换器文件中的源的种类。
表 2–1 转换器文件中的信息源
信息源 |
说明 |
---|---|
files |
存储在客户机的 /etc 目录中的文件。例如,/etc/passwd。 |
nisplus |
一个 NIS+ 表。例如,hosts 表。 |
nis |
一个 NIS 映射。例如,hosts 映射。 |
compat |
compat 可用于口令和组信息,从而支持 /etc/passwd、/etc/shadow 和 /etc/group 文件中的旧式 + 或 - 语法。 |
dns |
可用于指定从 DNS 获取主机信息。 |
ldap |
可用于指定从 LDAP 目录获取项。 |
单个源。如果某个信息类型只有一个源(如 nisplus),则使用转换器的例程将只在该源中搜索信息。如果该例程找到了此信息,则返回 success 状态消息。如果该例程未找到此信息,则会停止搜索并返回不同的状态消息。对错误消息的处理方式因例程而异。
多个源。如果表中包含给定信息类型的多个源,则该转换器会指示此例程在列出的第一个源中搜索。如果该例程找到了此信息,则返回 success 状态消息。如果该例程未在第一个源中找到此信息,将尝试在下一个源中进行搜索。该例程将依次搜索所有的源,直到找到此信息或者该例程由于指定了 return 而停止。如果在搜索了列出的所有源之后仍未找到此信息,该例程将停止搜索并返回 non-success 状态消息。
如果该例程找到了此信息,则返回 success 状态消息。如果该例程未找到此信息,则会返回下面的三个错误状态消息之一。下表列出了可能的状态消息。
表 2–2 转换器搜索状态消息
状态消息 |
消息的含义 |
---|---|
SUCCESS |
在指定的源中找到了所请求的项。 |
UNAVAIL |
该源不响应或者不可用。换言之,NIS+ 表、NIS 映射和 /etc 文件均无法找到或访问。 |
NOTFOUND |
该源用“该项不存在”响应。换言之,已经访问该表、映射或文件,但是未找到必需的信息。 |
TRYAGAIN |
该源正忙。该源下次可能会响应。换言之,找到了该表、映射或文件,但是此时无法响应查询。 |
可以指示转换器用下表中显示的两个操作之一来响应状态消息。
表 2–3 对转换器状态消息的响应
操作 |
含义 |
---|---|
return |
停止查找信息。 |
continue |
尝试在下一个源中查找。 |
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 转换器文件的注释示例
行的类型 |
示例 |
---|---|
注释行。 |
# hosts: nisplus [NOTFOUND=return] files |
解释行。 |
hosts: nisplus [NOTFOUND=return] file |
部分解释的行。不对 files 元素进行解释。 |
hosts: nisplus [NOTFOUND=return] # files |
对 nsswitch.conf 进行更改之后必须重新启动密钥服务器。
只有启动了密钥服务器后,密钥服务器才会读取名称服务转换器配置文件中的 publickey 项。如果更改转换器配置文件,则只有重新启动密钥服务器后,才会在密钥服务器上注册所做的更改。
随 Solaris 系统提供了四个可以适用于不同名称服务的转换器模块文件。每个文件都提供一组不同的缺省信息源。
下面列出了这四个模板文件:
LDAP 模板文件。nsswitch.ldap 配置文件指定 LDAP 目录作为计算机的主要信息源。
为了使用 LDAP 名称服务,除了修改 nsswitch.conf 以外,还必须正确地配置所有的 LDAP 客户机。有关更多信息,请参见第 12 章,设置 LDAP 客户机(任务)。
NIS+ 模板文件。nsswitch.nisplus 配置指定 NIS+ 作为所有信息(passwd、group、automount 和 aliases 除外)的主要源。对于那四个例外文件,主要信息源是本地 /etc 文件,次要信息源是 NIS+ 表。[NOTFOUND=return] 搜索条件指示转换器在获得“该项不存在”消息时停止在 NIS+ 表中搜索。只有当 NIS+ 服务器不可用时,转换器才在本地文件中进行搜索。
NIS 模板文件。nsswitch.nis 配置文件与 NIS+ 配置文件几乎完全相同,唯一的区别在于 NIS 文件指定 NIS 映射(而非 NIS+ 表)。因为 passwd 和 group 的搜索顺序是 files nis,所以您不必将 + 项放在 /etc/passwd 和 /etc/group 文件中。
文件模板文件。nsswitch.files 配置文件指定本地 /etc 文件作为计算机的唯一信息源。netgroup 没有“文件”源,因此客户机在转换器文件中不使用该项。
将最符合要求的模板文件复制到 nsswitch.conf 配置文件中,然后根据需要修改该文件。
例如,要使用 LDAP 模板文件,可键入以下命令:
mymachine# cp /etc/nsswitch.ldap /etc/nsswitch.conf |
下面列出了随 Solaris 产品提供的四个转换器文件。
# # # /etc/nsswitch.nisplus: # # # An example file that could be copied over to /etc/nsswitch.conf; # it uses NIS+ (NIS Version 3) in conjunction with files. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" # transports. # the following two lines obviate the "+" entry in /etc/passwd # and /etc/group. passwd: files nisplus group: files nisplus # consult /etc "files" only if nisplus is down. hosts: nisplus [NOTFOUND=return] files # Uncomment the following line, and comment out the above, to use # both DNS and NIS+. You must also set up the /etc/resolv.conf # file for DNS name server lookup. See resolv.conf(4). # hosts: nisplus dns [NOTFOUND=return] files services: nisplus [NOTFOUND=return] files networks: nisplus [NOTFOUND=return] files protocols: nisplus [NOTFOUND=return] files rpc: nisplus [NOTFOUND=return] files ethers: nisplus [NOTFOUND=return] files netmasks: nisplus [NOTFOUND=return] files bootparams: nisplus [NOTFOUND=return] files publickey: nisplus netgroup: nisplus automount: files nisplus aliases: files nisplus sendmailvars: files nisplus |
# # /etc/nsswitch.nis: # # An example file that could be copied over to /etc/nsswitch.conf; # it uses NIS (YP) in conjunction with files. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" # transports. # # the following two lines obviate the "+" entry in /etc/passwd # and /etc/group. passwd: files nis group: files nis # consult /etc "files" only if nis is down. hosts: nis [NOTFOUND=return] files networks: nis [NOTFOUND=return] files protocols: nis [NOTFOUND=return] files rpc: nis [NOTFOUND=return] files ethers: nis [NOTFOUND=return] files netmasks: nis [NOTFOUND=return] files bootparams: nis [NOTFOUND=return] files publickey: nis [NOTFOUND=return] files netgroup: nis automount: files nis aliases: files nis # for efficient getservbyname() avoid nis services: files nis sendmailvars: files |
# # /etc/nsswitch.files: # # An example file that could be copied over to /etc/nsswitch.conf; # it does not use any naming service. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" # transports. passwd: files group: files hosts: files networks: files protocols: files rpc: files ethers: files netmasks: files bootparams: files publickey: files # At present there isn't a 'files' backend for netgroup; # the system will figure it out pretty quickly, and will notuse # netgroups at all. netgroup: files automount: files aliases: files services: files sendmailvars: files |
# # /etc/nsswitch.ldap: # # An example file that could be copied over to /etc/nsswitch.conf; it # uses LDAP in conjunction with files. # # "hosts:" and "services:" in this file are used only if the # /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports. # the following two lines obviate the "+" entry in /etc/passwd and /etc/group. passwd: files ldap group: files ldap hosts: ldap [NOTFOUND=return] files networks: ldap [NOTFOUND=return] files protocols: ldap [NOTFOUND=return] files rpc: ldap [NOTFOUND=return] files ethers: ldap [NOTFOUND=return] files netmasks: ldap [NOTFOUND=return] files bootparams: ldap [NOTFOUND=return] files publickey: ldap [NOTFOUND=return] files netgroup: ldap automount: files ldap aliases: files ldap # for efficient getservbyname() avoid ldap services: files ldap sendmailvars: files |
随 Solaris 软件安装的缺省 nsswitch.conf 文件由安装过程中选择的名称服务确定。每一行都标识特定类型的网络信息(如主机、口令和组)以及信息源(如 NIS+ 表、NIS 映射、DNS 主机表或本地 /etc)。在选择某个名称服务时,会复制该服务的转换器模板文件以创建新的 nsswitch.conf 文件。例如,如果选择 NIS+,则会复制 nsswitch.nisplus 文件以创建新的 nsswitch.conf 文件。
Solaris 9 发行版软件会自动将 nsswitch.conf 文件与下列备用(模板)版本一起加载到每台计算机的 /etc 目录中。
这些备用模板文件中包含由 NIS+ 服务、NIS 服务、本地文件和 LDAP 使用的缺省转换器配置。系统没有为 DNS 提供缺省文件,但是可以编辑其中的任何文件以使用 DNS。在将 Solaris 软件首次安装到计算机上时,安装程序会选择计算机的缺省名称服务。在安装过程中,会将相应的模板文件复制到 /etc/nsswitch.conf 中。例如,对于使用 NIS+ 的客户机,会在安装过程中将 nsswitch.nisplus 复制到 nsswitch.conf 中。
如果网络连接到 Internet,而且用户必须使用 DNS 访问 Internet 主机,则必须启用 DNS 转发。
除非您拥有特殊的名称空间,否则复制到 nsswitch.conf 中的缺省模板文件应该能够满足正常的操作。
更改计算机的名称服务时,需要相应地修改计算机的转换器文件。例如,如果将计算机的名称服务从 NIS 更改为 NIS+,则需要安装适用于 NIS+ 的转换器文件。可通过将相应的模板文件复制到 nsswitch.conf 中来更改转换器文件。
如果要使用 NIS+ 安装脚本在计算机上安装 NIS+,系统会将 NIS+ 模板脚本复制到 nsswitch.conf 中。在这种情况下,除非您希望进行自定义,否则不必对转换器文件进行配置。
继续更改转换器文件之前,请确保正确设置了列在该文件中的源。换言之,如果打算选择 NIS+ 版本,客户机必须最终能够访问 NIS+ 服务。如果打算选择本地文件版本,则必须在客户机上正确设置这些文件。
要更改转换器文件,请执行以下步骤。
为了使用 LDAP 名称服务,除了修改 nsswitch.conf 以外,还必须正确地配置所有的 LDAP 客户机。有关更多信息,请参见第 12 章,设置 LDAP 客户机(任务)。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
将适用于计算机名称服务的相应备用文件复制到 nsswitch.conf 文件中。
NIS+ 版本(由 NIS+ 脚本自动完成)
client1# cd /etc client1# cp nsswitch.nisplus nsswitch.conf |
NIS 版本
client1# cd /etc client1# cp nsswitch.nis nsswitch.conf |
本地 /etc 文件版本
client1# cd /etc client1# cp nsswitch.files nsswitch.conf |
重新引导计算机。
nscd 守护进程对转换器信息进行缓存。 有关相应的信息,请参见 nscd(1M) 手册页。
某些库例程不会通过定期检查 nsswitch.conf 文件来查看该文件是否经过更改。必须重新引导计算机以确保此守护进程和这些例程具有该文件中的最新信息。
nsswitch.conf 文件还控制客户机的 DNS 转发,如以下各小节中所述。DNS 转发允许客户机访问 Internet。有关如何为 NIS 和 NIS+ 设置 DNS 转发的信息,请参见System Administration Guide: Naming and Directory Services (NIS+)。
NIS、NIS+ 和 LDAP 支持存储 IPv6 数据,还支持将 IPv6 传输机制用于协议通信。从 BIND 8.3.3 版开始,Solaris 上的 DNS 支持在客户端使用 IPv6 传输机制。从 BIND 8.4.2 版开始,Solaris 上的 DNS 为 IPv6 网络提供了完整的客户机/服务器解决方案。
nsswitch.conf 文件控制 IPv6 地址的搜索条件。IPv6 将 IP 地址的大小从 32 位增加到 128 位,从而可以支持更多层的寻址分层结构。地址大小越大,提供的可寻址节点越多。有关 IPv6 及其配置和实现的更多信息,请参见System Administration Guide: IP Services。
将新的 ipnodes 源用于 IPv6 地址。/etc/inet/ipnodes 文件同时存储 IPv4 和 IPv6 地址。/etc/inet/ipnodes 文件与 /etc/hosts 文件使用相同的格式约定。
能够识别 IPv6 的名称服务将新的 ipnodes 源用于搜索转发。例如,如果 LDAP 能够识别 IPv6 地址,请指定以下内容:
ipnodes: ldap [NOTFOUND=return] files |
潜在的延迟问题:
ipnodes 的缺省值为 files。在将 IPv4 转换为 IPv6 的过程中,由于并非所有的名称服务都能够识别 IPv6 地址,因此将接受 files(这是缺省值)。否则,在地址的解析过程中可能出现不必要的延迟(如引导计时延迟)。
应用程序会先在所有的 ipnodes 数据库中搜索 IPv4 地址,然后在 hosts 数据库中搜索 IPv4 地址。在指定 ipnodes 之前,请考虑在这两个数据库中都搜索 IPv4 地址所固有的延迟。
如果在/etc/passwd、/etc/shadow 和 /etc/group 文件中使用 +/-,则需要修改 nsswitch.conf 文件以确保与 +/- 兼容。
NIS+。要向 NIS+ 提供 +/- 语义,请将 passwd 和 groups 源更改为 compat。然后,将 passwd_compat: nisplus 项添加到 nsswitch.conf 文件中 passwd 或 group 项的后面,如下所示:
passwd: compat passwd_compat: nisplus group: compat group_compat: nisplus |
NIS。要提供与 Solaris 4.x 发行版中相同的语法,请将 passwd 和 groups 源更改为 compat。
passwd: compat group: compat |
指定 /etc 文件和由这些文件中的 +/- 项指定的 NIS 映射。
如果用户所使用的客户机由运行在 NIS 兼容模式下的 NIS+ 服务器提供服务,用户将无法针对 netgroup 表运行 ypcat。如果运行,即使该表中有项,所得到的结果也与该表为空时一样。
可以将口令信息包括在多个系统信息库(如 files 和 nisplus)中并访问它们。可以使用 nsswitch.conf 文件来为这些信息设置查找顺序。
files 必须是 nsswitch.conf 文件中 passwd 信息的第一个源。
在 NIS+ 环境中,nsswitch.conf 文件中的 passwd 行应当按以下顺序列出系统信息库:
passwd: files nisplus |
在 NIS 环境中,nsswitch.conf 文件中的 passwd 行应当按以下顺序列出系统信息库:
passwd: files nis |
首先列出 files 可允许 root 在大多数情况下(即使系统遇到某些网络问题或名称服务问题)登录。
建议不要为同一个用户维护多个系统信息库。通过为每个用户在单个系统信息库中维护集中的口令管理,可以减少发生混淆和错误的几率。如果要为每个用户维护多个系统信息库,请使用 passwd -r 命令来更新口令信息。
passwd -r repository |