When you're running a local area network, your overall goal is usually to
provide an environment for your users that makes the network transparent. An
important stepping stone is keeping vital data such as user account
information synchronized among all hosts. This provides users with the freedom
to move from machine to machine without the inconvenience of having to remember
different passwords and copy data from one machine to another. Data that is
centrally stored doesn't need to be replicated, so long as there is some
convenient means of accessing it from a network-connected host. By storing
important administrative information centrally, you can make ensure
consistency of that data, increase flexibility for the users by
allowing them to move from host to host in a transparent way, and make the
system administrator's life much easier by maintaining a single copy of
information to maintain when required.
We previously discussed an important example of this concept that is used on
the Internet—the Domain Name System (DNS). DNS serves a limited range of
information, the most important being the mapping between hostname and
IP address. For other types of information, there is no such specialized
service. Moreover, if you manage only a small LAN with no Internet
connectivity, setting up DNS may not seem to be worth the trouble.
This is why Sun developed the Network Information
System (NIS). NIS provides generic database access facilities that
can be used to distribute, for example, information contained in the
passwd and groups files to all
hosts on your network. This makes the network appear as a single system,
with the same accounts on all hosts. Similarly, you can use NIS
to distribute the hostname information from /etc/hosts
to all machines on the network.
NIS is based on RPC, and comprises a server, a client-side library, and
several administrative tools. Originally, NIS was called Yellow
Pages, or YP, which is still used to refer to it.
Unfortunately, the name is a trademark of British Telecom, which required
Sun to drop that name. As things go, some names stick with people, and so
YP lives on as a prefix to the names of most NIS-related commands such as
ypserv and ypbind.
Today, NIS is available for virtually all Unixes, and there are even
free implementations. BSD Net-2 released one that has
been derived from a public domain reference implementation donated by
Sun. The library client code from this release had been in the Linux
libc for a long time, and the administrative programs
were ported to Linux by
An NIS server is missing from the reference implementation, though.
Peter Eriksson developed a new
implementation called NYS.
It supports both plain NIS and Sun's much enhanced NIS+. NYS not only
provides a set of NIS tools and a server, but also adds a whole new
set of library functions that need to be compiled into your
libc if you wish to use it. This includes a new
configuration scheme for hostname resolution that replaces the current
scheme using host.conf.
The GNU libc, known as libc6 in the Linux community,
includes an updated version of the traditional NIS support developed by
Thorsten Kukuk. It supports all of the
library functions that NYS provided and also uses the enhanced configuration
scheme of NYS. You still need the tools and server, but using GNU libc saves
you the trouble of having to meddle with patching and recompiling the library.
This chapter focuses on the NIS support included in the GNU libc rather than
the other two packages. If you do want to run any of these packages, the
instructions in this chapter may or may not be enough. For additional
information, refer to the NIS-HOWTO or a book such as Managing
NFS and NIS by Hal Stern (O'Reilly).