NIS 映射中的信息以 ndbm 格式存储。ypfiles(4) 和 ndbm(3C) 对映射文件的这一格式进行了说明。
NIS 映射设计用于替换 UNIX /etc 文件以及其他配置文件,因此其中除了存储名称和地址外还存储大量的其他信息。在运行 NIS 的网络中,每个 NIS 域的 NIS 主服务器会为该域中要查询的其他计算机保留一组 NIS 映射。NIS 从属服务器也会保留主服务器映射的副本。NIS 客户机可从主服务器或从属服务器获取名称空间信息。
NIS 映射实质上是包含两个列的表。一列为关键字,另一列为与该关键字相关的信息。NIS 通过搜索关键字为客户机查找信息。由于每个映射使用不同的关键字,因此有些信息存储在多个映射中。例如,计算机的名称和地址存储在两个映射中:hosts.byname 和 hosts.byaddr。当服务器已知计算机的名称而需要查找其地址时,它将在 hosts.byname 映射中进行查找。当服务器已知计算机的地址而需要查找其名称时,它将在 hosts.byaddr 映射中进行查找。
NIS Makefile 存储在安装时被指定为 NIS 服务器的计算机上的 /var/yp 目录中。在该目录中运行 make 会使 makedbm 根据输入文件创建或修改缺省 NIS 映射。
请始终在主服务器上创建映射,因为在从属服务器上创建的映射将不会自动推送到主服务器。
Solaris 系统中提供了一组缺省 NIS 映射。您可能要使用所有这些映射,或只使用其中的部分映射。NIS 还可以使用您在安装其他软件产品时创建或添加的任何映射。
NIS 域的缺省映射位于每台服务器的 /var/yp/domainname 目录中。例如,属于域 test.com 的映射位于每台服务器的 /var/yp/test.com 目录中。
表 4–3 介绍了缺省 NIS 映射、其中包含的信息以及 NIS 运行时软件是否查看对应的管理文件。
表 4–3 NIS 映射说明
映射名 |
对应的 NIS 管理文件 |
说明 |
---|---|---|
audit_user |
audit_user |
包含用户审计预选数据。 |
auth_attr |
auth_attr |
包含授权名称和说明。 |
bootparams |
bootparams |
包含客户机在引导期间所需文件的路径名:root、swap,也可能是其他名称。 |
ethers.byaddr |
ethers |
包含计算机名和以太网地址。以太网地址是映射中的关键字。 |
ethers.byname |
ethers |
与 ethers.byaddr 相同,但关键字是计算机名而非以太网地址。 |
exec_attr |
exec_attr |
包含配置文件执行属性。 |
group.bygid |
group |
包含以组 ID 作为关键字的组安全信息。 |
group.byname |
group |
包含以组名作为关键字的组安全信息。 |
hosts.byaddr |
hosts |
包含计算机名和 IP 地址,以 IP 地址作为关键字。 |
hosts.byname |
hosts |
包含计算机名和 IP 地址,以计算机(主机)名作为关键字。 |
mail.aliases |
aliases |
包含别名和邮件地址,以别名作为关键字。 |
mail.byaddr |
aliases |
包含邮件地址和别名,以邮件地址作为关键字。 |
netgroup.byhost |
netgroup |
包含组名、用户名和计算机名。 |
netgroup.byuser |
netgroup |
与 netgroup.byhost 相同,但关键字为用户名。 |
netgroup |
netgroup |
与 netgroup.byhost 相同,但关键字为组名。 |
netid.byname |
passwd, hosts group |
用于 UNIX 形式的验证。包含计算机名和邮件地址(包括域名)。如果存在可用的 netid 文件,则除了查询通过其他文件提供的数据外,还会查询该文件。 |
netmasks.byaddr |
netmasks |
包含要与 IP 一起提交的网络掩码,以地址作为关键字。 |
networks.byaddr |
networks |
包含系统可识别的网络的名称及其 IP 地址,以地址作为关键字。 |
networks.byname |
networks |
与 networks.byaddr 相同,但关键字为网络名称。 |
passwd.adjunct.byname |
passwd 和 shadow |
包含 C2 客户机的审计信息和隐藏的口令信息。 |
passwd.byname |
passwd 和 shadow |
包含以用户名作为关键字的口令信息。 |
passwd.byuid |
passwd 和 shadow |
与 passwd.byname 相同,但关键字为用户 ID。 |
prof_attr |
prof_attr |
包含执行配置文件的属性。 |
protocols.byname |
protocols |
包含网络可识别的网络协议。 |
protocols.bynumber |
protocols |
与 protocols.byname 相同,但关键字为协议编号。 |
rpc.bynumber |
rpc |
包含系统可识别的 RPC 的程序编号和名称。关键字为 RPC 程序编号。 |
services.byname |
services |
列出网络可识别的 Internet 服务。关键字为端口或协议。 |
services.byservice |
services |
列出网络可识别的 Internet 服务。关键字为服务名。 |
user_attr |
user_attr |
包含用户和角色的扩展属性。 |
ypservers |
N/A |
列出网络可识别的 NIS 服务器。 |
NIS 中添加了新 ipnodes 映射(ipnodes.byaddr 和 ipnodes.byname)。这些映射可同时存储 IPv4 和 IPv6 地址。请参见 ipnodes(4) 手册页。NIS 客户机和服务器可以使用 IPv4 或 IPv6 RPC 传输进行通信。
ageing.byname 映射包含在实现 NIS 到 LDAP 转换时 yppasswdd 用来从 DIT 中读取和向其中写入口令生命期信息的信息。如果不使用口令生命期,则可从映射文件中将其注释掉。有关 NIS 到 LDAP 转换的更多信息,请参见第 15 章,从 NIS 转换为 LDAP(概述/任务)。
与使用 /etc 文件系统进行更新相比,NIS 可使更新网络数据库变得更加简单。无需在每次修改网络环境时更改每台计算机中的管理 /etc 文件。
例如,向运行 NIS 的网络中添加新计算机时,只需要更新主服务器中的输入文件并运行 make。这将自动更新 hosts.byname 和 hosts.byaddr 映射。然后,这些映射将传送给所有从属服务器,并可供域中所有客户机及其程序使用。当客户机或应用程序请求计算机名或地址时,NIS 服务器将参阅相应的 hosts.byname 或 hosts.byaddr 映射,并向该客户机发送请求的信息。
可以使用 ypcat 命令显示映射中的值。ypcat 基本格式为:
% ypcat mapname |
其中,mapname 是要查看的映射的名称或其昵称。如果映射仅由关键字组成(如 ypservers),请使用 ypcat -k。否则,ypcat 将列显空白行。ypcat(1) 手册页介绍了 ypcat 的更多选项。
可以使用 ypwhich 命令来确定哪台服务器是特定映射的主服务器。键入以下命令:
% ypwhich -m mapname |
其中,mapname 是要查找其主服务器的映射的昵称。ypwhich 通过显示主服务器的名称来进行响应。有关完整信息,请参阅 ypwhich(1) 手册页。
昵称是完整映射名的别名。要获得可用映射昵称(如 passwd.byname 的 passwd)的列表,请键入 ypcat -x 或 ypwhich -x。
昵称存储在 /var/yp/nicknames 文件中,该文件中包含映射昵称,后跟映射的完全指定名称,两者之间用空格分隔。可对此列表进行添加或修改。目前,昵称限制在 500 个以内。