After so much theoretical techno-babble, it's time to get our hands
dirty with actual configuration work. In this section, we will cover the
configuration of an NIS server. If an NIS server is running on your network,
you won't have to set up your own; in this case, you may safely skip this
section.
Note that if you are just going to experiment with the server, make
sure you don't set it up for an NIS domain name that is already in use
on your network. This may disrupt the entire network service and make a
lot of people very unhappy and very angry.
There are two possible NIS server configurations: master and slave. The slave
configuration provides a live backup machine, should your master server
fail. We will cover the configuration only for a master server here.
The server documentation will explain the differences, should you wish
to configure a slave server.
There are currently two NIS servers freely available for Linux: one contained
in Tobias Reber's yps package, and the other in Peter
Eriksson's ypserv package. It doesn't matter which one
you run.
After installing the server program (ypserv) in
/usr/sbin, you should create the directory that
is going to hold the map files your server is to distribute. When
setting up an NIS domain for the brewery domain, the maps would go to
/var/yp/brewery. The server determines whether it is
serving a particular NIS domain by checking if the map directory
is present. If you are disabling service for some NIS domain, make
sure to remove the directory as well.
Maps are usually stored in DBM files to speed up lookups. They are created
from the master files using a program called makedbm (for
Tobias's server) or dbmload (for Peter's server).
Transforming a master file into a form that dbmload can
parse usually requires some awk or sed
magic, which tends to be a little tedious to type and hard to remember.
Therefore, Peter Eriksson's ypserv package contains a
Makefile (called ypMakefile) that manages the conversion
of the most common master files for you. You should install it as
Makefile in your map directory and edit it to reflect
the maps you want the NIS server to share. Towards the top of the file, you'll
find
the all
target that lists the services ypserv offers. By default, the line looks
something like this:
all: ethers hosts networks protocols rpc services passwd group netid |
If you don't want to produce, for example, the
ethers.byname and ethers.byaddr
maps, simply remove the ethers
prerequisite from this rule. To test your setup, you can start with just
one or two maps, like the services.* maps.
After editing the Makefile, while in the map directory,
type make. This will automatically generate and install the
maps. You have to make sure to update the maps whenever you change the master
files, otherwise the changes will remain invisible to the network.
The section “Setting Up an NIS Client with GNU libc”
will explain how to configure the NIS client code. If your setup doesn't
work, you should try to find out whether requests are arriving at your
server. If you specify the ––debug
command-line flag to ypserv, it prints debugging
messages to the console about all incoming NIS queries and the results
returned. These should give you a hint as to where the problem
lies. Tobias's server doesn't have this option.