13.3. NIS 的客户端

如果您熟悉编写或移植网络应用程序,您可能会注意到之前列出的大多数 NIS 映射都对应于 C 库中的库函数。例如,要获取passwd信息,您通常使用getpwnamgetpwuid函数,它们分别返回与给定用户名或数字用户 ID 关联的帐户信息。在正常情况下,这些函数在标准文件(例如/etc/passwd.

)上执行请求的查找。然而,这些函数的 NIS 感知实现会修改此行为,并向 NIS 服务器发出 RPC 调用,服务器会查找用户名或用户 ID。这对应用程序是透明的。该函数可以将 NIS 数据视为已附加到原始passwd文件,以便应用程序可以使用这两组信息,或者视为 NIS 数据已完全替换它,从而忽略本地passwd信息,而仅使用 NIS 数据。

对于传统的 NIS 实现,对于哪些映射被替换以及哪些映射被附加到原始信息存在某些约定。有些,例如passwd映射,需要对passwd文件进行笨拙的修改,如果操作不当,可能会导致安全漏洞。为了避免这些陷阱,NYS 和 GNUlibc使用一种通用配置方案,该方案确定一组特定的客户端函数是使用原始文件、NIS 还是 NIS+,以及使用顺序。该方案将在本章后面描述。