如果您熟悉编写或移植网络应用程序,您会注意到上面列出的大多数 NIS 映射都对应于 C 库中的库函数。例如,要获取 passwd 信息,您通常使用 getpwnam(3) 和 getpwuid(3) 函数,它们分别返回与给定用户名或数字用户 ID 关联的帐户信息。在正常情况下,这些函数将在标准文件(例如 /etc/passwd)上执行请求的查找。
然而,这些函数的 NIS 感知实现将修改此行为,并发出 RPC 调用,让 NIS 服务器查找用户名或 ID。这对于应用程序来说是完全透明的。该函数可以将 NIS 映射“附加”到原始文件,或者用它“替换”原始文件。当然,这并不意味着对文件进行真正的修改,而只是意味着对应用程序来说看起来好像文件已被替换或附加。
对于传统的 NIS 实现,过去存在一些约定,规定哪些映射替换原始信息,哪些映射附加到原始信息。有些,例如 passwd 映射,需要对 passwd 文件进行笨拙的修改,如果操作不当,可能会打开安全漏洞。为了避免这些陷阱,NYS 使用了一种通用的配置方案,该方案确定特定的一组客户端函数是使用原始文件、NIS 还是 NIS+,以及使用顺序。这将在本章的后面部分进行描述。