home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Edition 1: Linux / CD1.iso / doc / HOWTO / NIS-HOWTO < prev    next >
Text File  |  1998-10-14  |  43KB  |  1,387 lines

  1.   The Linux NIS(YP)/NYS/NIS+ HOWTO
  2.   Thorsten Kukuk
  3.   v0.12, 12 June 1998
  4.  
  5.   This document describes how to configure Linux as NIS(YP) or NIS+
  6.   client and how to install as NIS server.
  7.   ______________________________________________________________________
  8.  
  9.   Table of Contents
  10.  
  11.  
  12.   1. Introduction
  13.  
  14.      1.1 New versions of this document
  15.      1.2 Disclaimer
  16.      1.3 Feedback and Corrections
  17.      1.4 Acknowledgements
  18.  
  19.   2. Glossary and General Information
  20.  
  21.      2.1 Glossary of Terms
  22.      2.2 Some General Information
  23.  
  24.   3. NIS or NIS+ ?
  25.  
  26.      3.1 libc 4/5 with traditional NIS or NYS ?
  27.  
  28.   4. How it works
  29.  
  30.      4.1 How NIS(YP) works
  31.      4.2 How NIS+ works
  32.  
  33.   5. The RPC Portmapper
  34.  
  35.   6. What do you need to set up NIS?
  36.  
  37.      6.1 Determine whether you are a Server, Slave or Client.
  38.      6.2 The Software
  39.      6.3 The ypbind daemon
  40.      6.4 Setting up a NIS Client using Traditional NIS
  41.      6.5 Setting up a NIS Client using NYS
  42.      6.6 Setting up a NIS Client using glibc 2.x
  43.      6.7 The nsswitch.conf File
  44.  
  45.   7. Shadow Passwords with NIS and PAM
  46.  
  47.   8. What do you need to set up NIS+ ?
  48.  
  49.      8.1 The Software
  50.      8.2 Setting up a NIS+ client
  51.      8.3 NIS+, keylogin, login and PAM
  52.      8.4 The nsswitch.conf File
  53.  
  54.   9. Setting up a NIS Server
  55.  
  56.      9.1 The Server Program ypserv
  57.      9.2 The Server Program yps
  58.      9.3 The Program rpc.yppasswdd
  59.  
  60.   10. Verifying the NIS/NYS Installation
  61.  
  62.   11. Common Problems and Troubleshooting NIS
  63.  
  64.   12. Frequently Asked Questions
  65.  
  66.  
  67.   ______________________________________________________________________
  68.  
  69.   1.  Introduction
  70.  
  71.   More and more, Linux machines are installed as part of a network of
  72.   computers. To simplify network administration, most networks (mostly
  73.   Sun-based networks) run the Network Information Service. Linux
  74.   machines can take full advantage of existing NIS service or provide
  75.   NIS service themselves. Linux machines can also act as full NIS+
  76.   clients, this support is in beta stage.
  77.  
  78.   This document tries to answer questions about setting up NIS(YP) and
  79.   NIS+ on your Linux machine. Don't forget to read the section about
  80.   ``the RPC Portmapper''
  81.  
  82.   The NIS-Howto is edited and maintained by:
  83.  
  84.  
  85.        Thorsten Kukuk, kukuk@vt.uni-paderborn.de
  86.  
  87.  
  88.   The primary source of the information for the initial NIS-Howto was
  89.   from:
  90.  
  91.  
  92.  
  93.        Andrea Dell'Amico       <adellam@ZIA.ms.it>
  94.        Mitchum DSouza          <Mitch.DSouza@NetComm.IE>
  95.        Erwin Embsen            <erwin@nioz.nl>
  96.        Peter Eriksson          <peter@ifm.liu.se>
  97.  
  98.  
  99.  
  100.  
  101.   who we should thank for writing the first versions of this document.
  102.  
  103.  
  104.   1.1.  New versions of this document
  105.  
  106.   You can always view the latest version of this on the World Wide Web
  107.   via the URL http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html
  108.   <http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html>.
  109.  
  110.   New versions of this document will also be uploaded to various Linux
  111.   WWW and FTP sites, including the LDP home page.
  112.  
  113.   Links to translations of this document could be found at http://www-
  114.   vt.uni-paderborn.de/~kukuk/linux/nis-howto.html <http://www-vt.uni-
  115.   paderborn.de/~kukuk/linux/nis-howto.html>.
  116.  
  117.   1.2.  Disclaimer
  118.  
  119.   Although this document has been put together to the best of our
  120.   knowledge it may, and probably does contain errors. Please read any
  121.   README files that are bundled with any of the various pieces of
  122.   software described in this document for more detailed and accurate
  123.   information. We will attempt to keep this document as error free as
  124.   possible.
  125.  
  126.  
  127.   1.3.  Feedback and Corrections
  128.  
  129.   If you have questions or comments about this document, please feel
  130.   free to mail Thorsten Kukuk, at kukuk@vt.uni-paderborn.de. I welcome
  131.   any suggestions or criticisms. If you find a mistake with this
  132.   document, please let me know so I can correct it in the next version.
  133.   Thanks.
  134.  
  135.   Please do not mail me questions about special problems with your Linux
  136.   Distribution! I don't know every Linux Distribution. But I will try to
  137.   add every solution you send me.
  138.  
  139.  
  140.   1.4.  Acknowledgements
  141.  
  142.   We would like to thank all the people who have contributed (directly
  143.   or indirectly) to this document. In alphabetical order:
  144.  
  145.  
  146.  
  147.        Byron A Jeff            <byron@cc.gatech.edu>
  148.        Miquel van Smoorenburg  <miquels@cistron.nl>
  149.  
  150.  
  151.  
  152.  
  153.   Theo de Raadt <deraadt@theos.com> is responsible for the original yp-
  154.   clients code.  Swen Thuemmler <swen@uni-paderborn.de> ported the yp-
  155.   clients code to Linux and also ported the yp-routines in libc (again
  156.   based on Theo's work). Thorsten Kukuk has written the NIS(YP) and NIS+
  157.   routines for GNU libc 2.x from scratch.
  158.  
  159.  
  160.   2.  Glossary and General Information
  161.  
  162.   2.1.  Glossary of Terms
  163.  
  164.   In this document a lot of acronyms are used. Here are the most
  165.   important acronyms and a brief explanation:
  166.  
  167.  
  168.      DBM
  169.         DataBase Management, a library of functions which maintain key-
  170.         content pairs in a data base.
  171.  
  172.  
  173.      DLL
  174.         Dynamically Linked Library, a library linked to an executable
  175.         program at run-time.
  176.  
  177.  
  178.      domainname
  179.         A name "key" that is used by NIS clients to be able to locate a
  180.         suitable NIS server that serves that domainname key. Please note
  181.         that this does not necessarily have anything at all to do with
  182.         the DNS "domain" (machine name) of the machine(s).
  183.  
  184.  
  185.      FTP
  186.         File Transfer Protocol, a protocol used to transfer files
  187.         between two computers.
  188.  
  189.  
  190.      libnsl
  191.         Name services library, a library of name service calls
  192.         (getpwnam, getservbyname, etc...) on SVR4 Unixes. GNU libc uses
  193.         this for the NIS (YP) and NIS+ functions.
  194.  
  195.  
  196.      libsocket
  197.         Socket services library, a library for the socket service calls
  198.         (socket, bind, listen, etc...) on SVR4 Unixes.
  199.      NIS
  200.         Network Information Service, a service that provides
  201.         information, that has to be known throughout the network, to all
  202.         machines on the network. There is support for NIS in Linux's
  203.         standard libc library, which in the following text is referred
  204.         to as "traditional NIS".
  205.  
  206.  
  207.      NIS+
  208.         Network Information Service (Plus :-), essentially NIS on
  209.         steroids. NIS+ is designed by Sun Microsystems Inc. as a
  210.         replacement for NIS with better security and better handling of
  211.         _large_ installations.
  212.  
  213.  
  214.      NYS
  215.         This is the name of a project and stands for NIS+, YP and Switch
  216.         and is managed by Peter Eriksson <peter@ifm.liu.se>. It contains
  217.         among other things a complete reimplementation of the NIS (= YP)
  218.         code that uses the Name Services Switch functionality of the NYS
  219.         library.
  220.  
  221.  
  222.      NSS
  223.         Name Service Switch. The /etc/nsswitch.conf file determines the
  224.         order of lookups performed when a certain piece of information
  225.         is requested.
  226.  
  227.  
  228.      RPC
  229.         Remote Procedure Call. RPC routines allow C programs to make
  230.         procedure calls on other machines across the network.  When
  231.         people talk about RPC they most often mean the Sun RPC variant.
  232.  
  233.  
  234.      YP Yellow Pages(tm), a registered trademark in the UK of British
  235.         Telecom plc.
  236.  
  237.  
  238.      TCP-IP
  239.         Transmission Control Protocol/Internet Protocol. It's the data
  240.         communication protocol most often used on Unix machines.
  241.  
  242.  
  243.  
  244.   2.2.  Some General Information
  245.  
  246.   The next four lines are quoted from the Sun(tm) System & Network
  247.   Administration Manual:
  248.  
  249.  
  250.  
  251.            "NIS was formerly known as Sun Yellow Pages (YP) but
  252.             the name Yellow Pages(tm) is a registered trademark
  253.             in the United Kingdom of British Telecom plc and may
  254.             not be used without permission."
  255.  
  256.  
  257.  
  258.  
  259.   NIS stands for Network Information Service. Its purpose is to provide
  260.   information, that has to be known throughout the network, to all
  261.   machines on the network. Information likely to be distributed by NIS
  262.   is:
  263.  
  264.  
  265.   ╖  login names/passwords/home directories (/etc/passwd)
  266.  
  267.   ╖  group information (/etc/group)
  268.  
  269.   So, for example, if your password entry is recorded in the NIS passwd
  270.   database, you will be able to login on all machines on the net which
  271.   have the NIS client programs running.
  272.  
  273.   Sun is a trademark of Sun Microsystems, Inc. licensed to SunSoft, Inc.
  274.  
  275.  
  276.  
  277.   3.  NIS or NIS+ ?
  278.  
  279.   The choice between NIS and NIS+ is easy - use NIS if you don't have to
  280.   use NIS+ or have severe security needs. NIS+ is _much_ more
  281.   problematic to administer (it's pretty easy to handle on the client
  282.   side, but the server side is horrible). Another problem is that the
  283.   support for NIS+ under Linux is still under developement - you need
  284.   the latest glibc snapshot for it or have to wait for glibc 2.1. There
  285.   is a port of the glibc NIS+ support for libc5 as drop in replacement.
  286.  
  287.  
  288.   3.1.  libc 4/5 with traditional NIS or NYS ?
  289.  
  290.   The choice between "traditional NIS" or the NIS code in the NYS
  291.   library is a choice between laziness and maturity vs. flexibility and
  292.   love of adventure.
  293.  
  294.   The "traditional NIS" code is in the standard C library and has been
  295.   around longer and sometimes suffers from it's age and slight
  296.   inflexibility.
  297.  
  298.   The NIS code in the NYS library requires you to recompile the libc
  299.   library to include the NYS code into the libc library (or maybe you
  300.   can go get a precompiled version of libc from someone who has already
  301.   done it).
  302.  
  303.   Another difference is that the traditional NIS code has some support
  304.   for NIS Netgroups, which the NYS code doesn't. On the other hand the
  305.   NYS code allows you to handle Shadow Passwords in a transparent way.
  306.   The "traditonal NIS" code doesn't support Shadow Passwords over NIS.
  307.  
  308.   Forgot this all if you use the new GNU C Library 2.x (aka libc6). It
  309.   has real NSS (name switch service) support, which makes it very
  310.   flexible, and contains support for the following NIS/NIS+ maps:
  311.   aliases, ethers, group, hosts, netgroups, networks, protocols,
  312.   publickey, passwd, rpc, services and shadow. The GNU C Library has no
  313.   problems with shadow passwords over NIS.
  314.  
  315.  
  316.   4.  How it works
  317.  
  318.   4.1.  How NIS(YP) works
  319.  
  320.   Within a network there must be at least one machine acting as a NIS
  321.   server. You can have multiple NIS servers, each serving different NIS
  322.   "domains" - or you can have cooperating NIS servers, where one is said
  323.   to be the master NIS server, and all the other are so-called slave NIS
  324.   servers (for a certain NIS "domain", that is!) - or you can have a mix
  325.   of them...
  326.  
  327.   Slave servers only have copies of the NIS databases and receive these
  328.   copies from the master NIS server whenever changes are made to the
  329.   master's databases.  Depending on the number of machines in your
  330.   network and the reliability of your network, you might decide to
  331.   install one or more slave servers.  Whenever a NIS server goes down or
  332.   is too slow in responding to requests, a NIS client connected to that
  333.   server will try to find one that is up or quicker.
  334.  
  335.   NIS databases are in so-called DBM format, derived from ASCII
  336.   databases.  For example, the files /etc/passwd and /etc/group can be
  337.   directly converted to DBM format using ASCII-to-DBM translation
  338.   software ("makedbm", it's included with the server software). The
  339.   master NIS server should have both, the ASCII databases and the DBM
  340.   databases.
  341.  
  342.   Slave servers  will be notified of any change to the NIS maps, (via
  343.   the "yppush" program), and automatically retrieve the necessary
  344.   changes in order to synchronize their databases. NIS clients do not
  345.   need to do this since they always talk to the NIS server to read the
  346.   information stored in it's DBM databases.
  347.  
  348.   The author of the YP clients for linux has informed us that the newest
  349.   ypbind (ypbind-3.3.tar.gz) is able to get the server from a
  350.   configuration file - thus no need to broadcast (which is insecure -
  351.   due to the fact that anyone may install a NIS server and answer the
  352.   broadcast queries...)
  353.  
  354.  
  355.   4.2.  How NIS+ works
  356.  
  357.   NIS+ is a new version of the network information nameservice from Sun.
  358.   The biggest difference between NIS and NIS+ is, that NIS+ has support
  359.   for data encryption and authentication over secure RPC.
  360.  
  361.   The  naming  model of NIS+ is based upon a tree structure. Each node
  362.   in the tree corresponds to an NIS+ object, from which we have six
  363.   types: directory, entry, group, link, table and private.
  364.  
  365.   The NIS+ directory that forms the root of the NIS+ namespace is called
  366.   the root directory. There are two special NIS+ directories: org_dir
  367.   and groups_dir. The org_dir directory consists of all administration
  368.   tables, such as passwd, hosts, and mail_aliases. The groups_dir
  369.   directory consists of NIS+ group objects which are used for access
  370.   control. The collection of org_dir, groups_dir and their parent
  371.   directory is referred to as an NIS+ domain.
  372.  
  373.  
  374.   5.  The RPC Portmapper
  375.  
  376.   To run any of the software mentioned below you will need to run the
  377.   program /usr/sbin/portmap. Some Linux distributions already have the
  378.   code in the /etc/rc.d/ files to start up this daemon.  All you have to
  379.   do is to activate it and reboot your Linux machine.  Read your Linux
  380.   Distribution Documentation how to do this.
  381.  
  382.   The RPC portmapper (portmap(8)) is a server that converts RPC program
  383.   numbers into TCP/IP (or UDP/IP) protocol port numbers. It must be
  384.   running in order to make RPC calls (which is what the NIS/NIS+ client
  385.   software does) to RPC servers (like a NIS or NIS+ server) on that
  386.   machine.  When an RPC server is started, it will tell portmap what
  387.   port number it is listening to, and what RPC program numbers it is
  388.   prepared to serve.  When a client wishes to make an RPC call to a
  389.   given program number, it will first contact portmap on the server
  390.   machine to determine the port number where RPC packets should be sent.
  391.  
  392.   Normally, standard RPC servers are started by inetd(8), so portmap
  393.   must be started before inetd is invoked.
  394.  
  395.   For secure RPC, the portmapper needs the Time Service. Make sure, that
  396.   the Time Service is enabled in /etc/inetd.conf on all hosts:
  397.        #
  398.        # Time service is used for clock syncronization.
  399.        #
  400.        time    stream  tcp     nowait  root    internal
  401.        time    dgram   udp     wait    root    internal
  402.  
  403.  
  404.  
  405.  
  406.   IMPORTANT: Don't forget to restart inetd after changes on this file !
  407.  
  408.  
  409.  
  410.   6.  What do you need to set up NIS?
  411.  
  412.   6.1.  Determine whether you are a Server, Slave or Client.
  413.  
  414.   To answer this question you have to consider two cases:
  415.  
  416.  
  417.   1. Your machine is going to be part of a network with existing NIS
  418.      servers
  419.  
  420.   2. You do not have any NIS servers in the network yet
  421.  
  422.   In the first case, you only need the client programs (ypbind, ypwhich,
  423.   ypcat, yppoll, ypmatch). The most important program is ypbind. This
  424.   program must be running at all times, that is, it should always appear
  425.   in the list of processes. It's a so-called daemon process and needs to
  426.   be started from the system's startup file (eg. /etc/rc.local,
  427.   /etc/init.d/nis, /etc/rc.d/init.d/ypbind).  As soon as ypbind is
  428.   running, your system has become a NIS client.
  429.  
  430.   In the second case, if you don't have NIS servers, then you will also
  431.   need a NIS server program (usually called ypserv). Section 8 describes
  432.   how to set up a NIS server on your Linux machine using the "ypserv"
  433.   implementation by Peter Eriksson and Thorsten Kukuk.  Note that from
  434.   version 0.14 this implementation supports the master-slave concept
  435.   talked about in section 4.1.
  436.  
  437.   There is also another free NIS server available, called "yps", written
  438.   by Tobias Reber in Germany which does support the master-slave
  439.   concept, but has other limitations and isn't supported any longer.
  440.  
  441.  
  442.  
  443.   6.2.  The Software
  444.  
  445.   The system library "/usr/lib/libc.a" (version 4.4.2 and better) or the
  446.   shared library "/lib/libc.so.x" contain all necessary system calls to
  447.   succesfully compile the NIS client and server software. For glibc 2.x,
  448.   you also need /lib/libnsl.so.1.
  449.  
  450.   Some people reported that NIS only works with "/usr/lib/libc.a"
  451.   version 4.5.21 and better so if you want to play it safe don't use
  452.   older libc's.  The NIS client software can be obtained from:
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.     Site                  Directory                        File Name
  464.  
  465.     ftp.kernel.org        /pub/linux/utils/net/NIS         yp-tools-2.0.tar.gz
  466.     ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-mt-1.2.tar.gz
  467.     ftp.kernel.org        /pub/linux/utils/net/NIS         ypbind-3.3.tar.gz
  468.     sunsite.unc.edu       /pub/Linux/system/Network/admin  yp-clients-2.2.tar.gz
  469.     ftp.uni-paderborn.de  /linux/local/yp                  yp-clients-2.2.tar.gz
  470.     ftp.uni-paderborn.de  /linux/local/yp                  ypbind-3.3.tar.gz
  471.  
  472.  
  473.  
  474.  
  475.   Once you obtained the software, please follow the instructions which
  476.   come with the software. yp-clients 2.2 are for use with libc4 and
  477.   libc5 until 5.4.20. libc 5.4.21 and glibc 2.x needs yp-tools 1.4.1.
  478.   The new yp-tools 2.0 will work with every Linux libc. Since there was
  479.   some bugs in the NIS code, you shouldn't use libc 5.4.21-5.4.35. Use
  480.   libc 5.4.36 or later instead, or the most YP programs will not work.
  481.   ypbind 3.3 will work with all libraries, too. You should never use the
  482.   ypbind from yp-clients 2.2.
  483.  
  484.  
  485.   6.3.  The ypbind daemon
  486.  
  487.   Assuming you have succesfully compiled the software you are now ready
  488.   to install the software. A suitable place for the ypbind daemon is the
  489.   directory /usr/sbin. Some people may tell you, that you don't need
  490.   ypbind on a system with NYS. This is wrong, ypwhich and ypcat need it.
  491.  
  492.   You'll need to do this as root of course. The other binaries (ypwhich,
  493.   ypcat, yppoll, ypmatch) should go in a directory accessible by all
  494.   users, normally /usr/bin.
  495.  
  496.   The ypbind process has a configuration file called /etc/yp.conf. You
  497.   can hardcode a NIS server there - for more info see the manual page
  498.   for ypbind(8).  You also need this file for NYS.  An example:
  499.  
  500.  
  501.          ypserver voyager
  502.          ypserver ds9
  503.  
  504.  
  505.  
  506.  
  507.   If the system could resolv the hostnames without NIS, you could use
  508.   the name, else you have to use the IP address.
  509.  
  510.   It might be a good idea to test ypbind before  incorporating it in the
  511.   /etc/rc.d/ files. To test ypbind do the following:
  512.  
  513.  
  514.   ╖  Make sure you have your domain name set. If it is not set then
  515.      issue the command:
  516.  
  517.  
  518.  
  519.                    /bin/domainname nis.domain
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.   where nis.domain should be some string, _NOT_ normally associated with
  527.   the domain name of your machine! The reason for this is that it makes
  528.   it a little harder for external crackers to retreive the password
  529.   database from your NIS servers. If you don't know what the NIS domain
  530.   name is on your network, ask your system/network administrator.
  531.  
  532.   ╖  Start up "/usr/sbin/portmap" if it is not already running.
  533.  
  534.   ╖  Create the directory "/var/yp" if it does not exist.
  535.  
  536.   ╖  Start up "/usr/sbin/ypbind"
  537.  
  538.   ╖  Use the command "rpcinfo -p localhost" to check if ypbind was able
  539.      to register its service with the portmapper. The rpcinfo should
  540.      produce something like:
  541.  
  542.  
  543.  
  544.               program vers proto   port
  545.                100000    2   tcp    111  portmapper
  546.                100000    2   udp    111  portmapper
  547.                100007    2   udp    637  ypbind
  548.                100007    2   tcp    639  ypbind
  549.                300019    1   udp    660
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.   ╖  You may also run "rpcinfo -u localhost ypbind". This command should
  557.      produce something like:
  558.  
  559.  
  560.  
  561.                program 100007 version 2 ready and waiting
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.   At this point you should be able to use NIS client programs like
  569.   ypcat, etc...  For example, "ypcat passwd" will give you the entire
  570.   NIS password database.
  571.  
  572.   IMPORTANT: If you skipped the test procedure then make sure you have
  573.   set the domain name, and created the directory:
  574.  
  575.  
  576.  
  577.            /var/yp
  578.  
  579.  
  580.  
  581.  
  582.   This directory MUST exist for ypbind to start up succesfully.
  583.  
  584.   To check if the domainname is set correct, use the /bin/ypdomainname
  585.   from yp-tools 2.0. It uses the yp_get_default_domain function, which
  586.   is more restrict. It doesn't allow for example the "(none)"
  587.   domainname, which is the default under Linux and makes a lot of
  588.   problems.
  589.  
  590.   If the test worked you may now want to change the files in /etc/rc.d/
  591.   on your system so that ypbind will be started up at boot time and your
  592.   system will act as a NIS client. Make sure, that the domainname will
  593.   be set at boot time.
  594.  
  595.   Well, that's it. Reboot the machine and watch the boot messages to see
  596.   if ypbind is actually started.
  597.  
  598.  
  599.  
  600.   6.4.  Setting up a NIS Client using Traditional NIS
  601.  
  602.   For host lookups you must set (or add) "nis" to the lookup order line
  603.   in your /etc/host.conf file. Please read the manpage "resolv+.8" for
  604.   more details.
  605.  
  606.   Add the following line to /etc/passwd on your NIS clients:
  607.  
  608.  
  609.  
  610.        +::::::
  611.  
  612.  
  613.  
  614.  
  615.   You can also use the + and - characters to include/exclude or change
  616.   users. If you want to exclude the user guest just add -guest to your
  617.   /etc/passwd file.  You want to use a different shell (e.g. ksh) for
  618.   the user "linux"?  No problem, just add "+linux::::::/bin/ksh"
  619.   (without the quotes) to your /etc/passwd. Fields that you don't want
  620.   to change have to be left empty. You could also use Netgroups for user
  621.   control.
  622.  
  623.   For example, to only allow login-access to miquels, dth and ed, and
  624.   all members of the sysadmin netgroup, but to have the account data of
  625.   all other users available:
  626.  
  627.  
  628.  
  629.              +miquels:::::::
  630.              +ed:::::::
  631.              +dth:::::::
  632.              +@sysadmins:::::::
  633.              -ftp
  634.              +:*::::::/etc/NoShell
  635.  
  636.  
  637.  
  638.  
  639.   Note that in Linux you can also override the password field, as we did
  640.   in this example. In this example, we also remove the login "ftp", so
  641.   it isn't known any longer, and anonymous ftp will not work.
  642.  
  643.   The netgroup would be look like
  644.  
  645.  
  646.        sysadmins (-,software,) (-,kukuk,)
  647.  
  648.  
  649.  
  650.  
  651.   IMPORTANT: Note that the netgroup  feature is implemented starting
  652.   from libc 4.5.26. But if you have a version of libc earlier than
  653.   4.5.26, every user in the NIS password database can access your linux
  654.   machine if you run "ypbind".
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.   6.5.  Setting up a NIS Client using NYS
  662.  
  663.   All that is required is that the NIS configuration file (/etc/yp.conf)
  664.   points to the correct server(s) for its information.  Also, the Name
  665.   Services Switch configuration file (/etc/nsswitch.conf) must be
  666.   correctly set up.
  667.  
  668.   You should install ypbind. It isn't needed by the libc, but the
  669.   NIS(YP) tools need it.
  670.  
  671.   If you wish to use the include/exclude user feature
  672.   (+/-guest/+@admins), you have to use "passwd: compat" and "group:
  673.   compat". Note, that there is no "shadow: compat" ! You have to use
  674.   "shadow: files nis" in this case.
  675.  
  676.   The NYS sources are part of the libc 5 sources. When run configure,
  677.   say the first time "NO" to the "Values correct" question, then say
  678.   "YES" to "Build a NYS libc from nys".
  679.  
  680.  
  681.   6.6.  Setting up a NIS Client using glibc 2.x
  682.  
  683.   The glibc uses "traditional NIS", so you need to start ypbind. The
  684.   Name Services Switch configuration file (/etc/nsswitch.conf) must be
  685.   correctly set up. If you use the compat mode for passwd, shadow or
  686.   group, you have to add the "+" at the end of this files, and you could
  687.   use the include/exclude user feature. The configuration is excatly the
  688.   same as under Solaris 2.x.
  689.  
  690.  
  691.   6.7.  The nsswitch.conf File
  692.  
  693.   The Network Services switch file /etc/nsswitch.conf determines the
  694.   order of lookups performed when a certain piece of information is
  695.   requested, just like the /etc/host.conf file which determines the way
  696.   host lookups are performed. For example, the line
  697.  
  698.  
  699.  
  700.            hosts: files nis dns
  701.  
  702.  
  703.  
  704.  
  705.   specifies that host lookup functions should first look in the local
  706.   /etc/hosts file, followed by a NIS lookup and finally thru the domain
  707.   name service (/etc/resolv.conf and named), at which point if no match
  708.   is found an error is returned. This file must be readable for every
  709.   user !
  710.  
  711.   A good /etc/nsswitch.conf file for NIS is:
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.   #
  728.   # /etc/nsswitch.conf
  729.   #
  730.   # An example Name Service Switch config file. This file should be
  731.   # sorted with the most-used services at the beginning.
  732.   #
  733.   # The entry '[NOTFOUND=return]' means that the search for an
  734.   # entry should stop if the search in the previous entry turned
  735.   # up nothing. Note that if the search failed due to some other reason
  736.   # (like no NIS server responding) then the search continues with the
  737.   # next entry.
  738.   #
  739.   # Legal entries are:
  740.   #
  741.   #       nisplus                 Use NIS+ (NIS version 3)
  742.   #       nis                     Use NIS (NIS version 2), also called YP
  743.   #       dns                     Use DNS (Domain Name Service)
  744.   #       files                   Use the local files
  745.   #       db                      Use the /var/db databases
  746.   #       [NOTFOUND=return]       Stop searching if not found so far
  747.   #
  748.  
  749.   passwd:     compat
  750.   group:      compat
  751.   shadow:     compat
  752.  
  753.   passwd_compat: nis
  754.   group_compat: nis
  755.   shadow_compat: nis
  756.  
  757.   hosts:      nis files dns
  758.  
  759.   services:   nis [NOTFOUND=return] files
  760.   networks:   nis [NOTFOUND=return] files
  761.   protocols:  nis [NOTFOUND=return] files
  762.   rpc:        nis [NOTFOUND=return] files
  763.   ethers:     nis [NOTFOUND=return] files
  764.   netmasks:   nis [NOTFOUND=return] files
  765.   netgroup:   nis
  766.   bootparams: nis [NOTFOUND=return] files
  767.   publickey:  nis [NOTFOUND=return] files
  768.   automount:  files
  769.   aliases:    nis [NOTFOUND=return] files
  770.  
  771.  
  772.  
  773.  
  774.   passwd_compat, group_compat and shadow_compat are only supported by
  775.   glibc 2.x.  If there are no shadow rules in /etc/nsswitch.conf, glibc
  776.   will use the passwd rule for lookups. There are some more lookup
  777.   module for glibc like hesoid.  For more information, read the glibc
  778.   documentation.
  779.  
  780.  
  781.   7.  Shadow Passwords with NIS and PAM
  782.  
  783.   Shadow passwords over NIS are always a bad idea. You lost the
  784.   security, which shadow gives you. A good way to avoid shadow passwords
  785.   over NIS is, to put only the local system users in /etc/shadow. Remove
  786.   the NIS user entries from the shadow database, and put the password
  787.   back in passwd.  So you could use shadow for the root login, and
  788.   normal passwd for NIS user. This has the advantage, that it will work
  789.   with every NIS client.
  790.  
  791.   If this is not an option for you, you need the GNU C Library 2.x. This
  792.   is the only Linux libc, which supports shadow passwords over NIS.
  793.   Linux libc5 has no support for it. Linux libc5 compiled with NYS
  794.   enabled has some code for it. But this code is badly broken in some
  795.   cases and doesn't work with all correct shadow entries.
  796.  
  797.   The next problem is PAM. The GNU C Library support Shadow passwords
  798.   over NIS, but PAM does not, especially pam_pwdb/libpwdb. This is a big
  799.   problem for RedHat 5.x users. If you have glibc and PAM, you need to
  800.   change the /etc/pam.d/* entries. Replace all pam_pwdb rules through
  801.   pam_auth_unix_* modules. This will work.
  802.  
  803.  
  804.  
  805.   8.  What do you need to set up NIS+ ?
  806.  
  807.   8.1.  The Software
  808.  
  809.   The Linux NIS+ client code was developed for the GNU C library 2.
  810.   There is also a port for Linux libc5, since all commercial
  811.   Applications are linked against this library, and you couldn't
  812.   recompile them for using glibc. There are problems with libc5 and
  813.   NIS+: You couldn't link static programs with it, and programs compiled
  814.   with this library will not work with other libc5 versions.
  815.  
  816.  
  817.   You need to retrieve and compile the latest GNU C library 2 snapshot.
  818.   And you need a glibc based system like RedHat 5.x or the upcoming
  819.   Debian 2.0. But be warned: This is beta Software ! Read the Docs about
  820.   glibc snapshots and from the Distributions ! glibc 2.0.x doesn't
  821.   contain the NIS+ support, and will never contain it. The first public
  822.   version with NIS+ support will be 2.1.
  823.  
  824.   The NIS+ client software can be obtained from:
  825.  
  826.  
  827.          Site                   Directory                  File Name
  828.  
  829.          ftp.kernel.org         /pub/software/libs/glibc   libc-*, glibc-crypt-*,
  830.                                                            glibc-linuxthreads-*
  831.          ftp.kernel.org         /pub/linux/utils/net/NIS+  nis-tools-1.4.2.tar.gz
  832.          ftp.kernel.org         /pub/linux/utils/net/NIS+  pam_keylogin-1.2.tar.gz
  833.  
  834.  
  835.  
  836.  
  837.   Distributions based on glibc can be fetched from:
  838.  
  839.  
  840.          Site                   Directory
  841.  
  842.          ftp.redhat.com         /pub/redhat/redhat-5.1
  843.          ftp.debian.org         /pub/debian/dists/hamm
  844.  
  845.  
  846.  
  847.  
  848.   For compilation of the GNU C Library, please follow the instructions
  849.   which come with the software. Here you could find the patched libc5,
  850.   based on NYS and the glibc sources as drop in replacement for the
  851.   standart libc5:
  852.  
  853.  
  854.  
  855.          Site               Directory                  File Name
  856.  
  857.          ftp.kernel.org     /pub/linux/utils/net/NIS+  libc-5.4.44-nsl-0.4.10.tar.gz
  858.  
  859.   You should also look at http://www-vt.uni-
  860.   paderborn.de/~kukuk/linux/nisplus.html <http://www-vt.uni-
  861.   paderborn.de/~kukuk/linux/nisplus.html> for more information and the
  862.   latest sources.
  863.  
  864.  
  865.   8.2.  Setting up a NIS+ client
  866.  
  867.   IMPORTANT: For setting up a NIS+ client, read your Solaris NIS+ docs
  868.   what to do on the server side ! This document only describes what to
  869.   do on the client side !
  870.  
  871.   After installing the new libc and nis-tools, create the credentials
  872.   for the new client on the NIS+ server. Make sure, portmap is running.
  873.   Then check, if your Linux PC has the same time as the NIS+ Server. For
  874.   secure RPC, you have only a small window from about 3 minutes, in
  875.   which the credentials are valid. A good idea is to run xntpd on every
  876.   host. After this, run
  877.  
  878.  
  879.  
  880.        domainname nisplus.domain.
  881.        nisinit -c -H <NIS+ server>
  882.  
  883.  
  884.  
  885.  
  886.   to initialize the cold Start File. Read the nisinit man page for more
  887.   options. Make sure, that the domainname will always be set after a
  888.   reboot.  If you don't know what the NIS+ domain name is on your
  889.   network, ask your system/network administrator.
  890.  
  891.   Now you should change your /etc/nsswitch.conf file. Make sure, that
  892.   the only service after publickey is nisplus ("publickey: nisplus"),
  893.   and nothing else !
  894.  
  895.   After this, start keyserv and make sure, that it will always be
  896.   started at boot time. Run
  897.  
  898.  
  899.        keylogin -r
  900.  
  901.  
  902.  
  903.  
  904.   to store the root secretkey on your system. (I hope you have added the
  905.   publickey for the new host on the NIS+ Server ?).
  906.  
  907.   "niscat passwd.org_dir" should now show you all entries in the passwd
  908.   database.
  909.  
  910.  
  911.  
  912.   8.3.  NIS+, keylogin, login and PAM
  913.  
  914.   When the user logs in, he need to set his secretkey to keyserv. This
  915.   is done by calling "keylogin". The login from the shadow package will
  916.   do this for the user. For a PAM aware login, you have to install
  917.   pam_keylogin-1.1.tar.gz and change the /etc/pam.d/login file to use
  918.   pam_unix_auth, not pwdb, which doesn't support NIS+. An example:
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.   #%PAM-1.0
  926.   auth       required     /lib/security/pam_securetty.so
  927.   auth       required     /lib/security/pam_keylogin.so
  928.   auth       required     /lib/security/pam_unix_auth.so
  929.   auth       required     /lib/security/pam_nologin.so
  930.   account    required     /lib/security/pam_unix_acct.so
  931.   password   required     /lib/security/pam_unix_passwd.so
  932.   session    required     /lib/security/pam_unix_session.so
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.   8.4.  The nsswitch.conf File
  940.  
  941.   The Network Services switch file /etc/nsswitch.conf determines the
  942.   order of lookups performed when a certain piece of information is
  943.   requested, just like the /etc/host.conf file which determines the way
  944.   host lookups are performed. For example, the line
  945.  
  946.  
  947.  
  948.            hosts: files nisplus dns
  949.  
  950.  
  951.  
  952.  
  953.   specifies that host lookup functions should first look in the local
  954.   /etc/hosts file, followed by a NIS+ lookup and finally thru the domain
  955.   name service (/etc/resolv.conf and named), at which point if no match
  956.   is found an error is returned.
  957.  
  958.   A good /etc/nsswitch.conf file for NIS+ is:
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.   #
  992.   # /etc/nsswitch.conf
  993.   #
  994.   # An example Name Service Switch config file. This file should be
  995.   # sorted with the most-used services at the beginning.
  996.   #
  997.   # The entry '[NOTFOUND=return]' means that the search for an
  998.   # entry should stop if the search in the previous entry turned
  999.   # up nothing. Note that if the search failed due to some other reason
  1000.   # (like no NIS server responding) then the search continues with the
  1001.   # next entry.
  1002.   #
  1003.   # Legal entries are:
  1004.   #
  1005.   #       nisplus                 Use NIS+ (NIS version 3)
  1006.   #       nis                     Use NIS (NIS version 2), also called YP
  1007.   #       dns                     Use DNS (Domain Name Service)
  1008.   #       files                   Use the local files
  1009.   #       db                      Use the /var/db databases
  1010.   #       [NOTFOUND=return]       Stop searching if not found so far
  1011.   #
  1012.  
  1013.   passwd:     compat
  1014.   # for libc5: passwd: files nisplus
  1015.   group:      compat
  1016.   # for libc5: group: files nisplus
  1017.   shadow:     compat
  1018.   # for libc5: shadow: files nisplus
  1019.  
  1020.   passwd_compat: nisplus
  1021.   group_compat:  nisplus
  1022.   shadow_compat: nisplus
  1023.  
  1024.   hosts:      nisplus files dns
  1025.  
  1026.   services:   nisplus [NOTFOUND=return] files
  1027.   networks:   nisplus [NOTFOUND=return] files
  1028.   protocols:  nisplus [NOTFOUND=return] files
  1029.   rpc:        nisplus [NOTFOUND=return] files
  1030.   ethers:     nisplus [NOTFOUND=return] files
  1031.   netmasks:   nisplus [NOTFOUND=return] files
  1032.   netgroup:   nisplus
  1033.   bootparams: nisplus [NOTFOUND=return] files
  1034.   publickey:  nisplus
  1035.   automount:  files
  1036.   aliases:    nisplus [NOTFOUND=return] files
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.   9.  Setting up a NIS Server
  1044.  
  1045.   9.1.  The Server Program ypserv
  1046.  
  1047.   This document only describes how to set up the "ypserv" NIS server.
  1048.  
  1049.   The NIS server software can be found on:
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.     Site                   Directory                     File Name
  1058.  
  1059.     ftp.kernel.org         /pub/linux/utils/net/NIS      ypserv-1.3.2.tar.gz
  1060.     wauug.erols.com        /pub/net/nis                  ypserv-1.3.2.tar.gz
  1061.  
  1062.  
  1063.  
  1064.  
  1065.   You could also look at http://www-vt.uni-
  1066.   paderborn.de/~kukuk/linux/nis.html <http://www-vt.uni-
  1067.   paderborn.de/~kukuk/linux/nis.html> for more information.
  1068.  
  1069.   The server setup is the same for both traditional NIS and NYS.
  1070.  
  1071.   Compile the software to generate the "ypserv" and "makedbm" programs.
  1072.   If you run your server as master, determine what files you require to
  1073.   be available via NIS and then add or remove the appropriate entries to
  1074.   the /var/yp/Makefile.
  1075.  
  1076.   There was one big change between ypserv 1.1 and ypserv 1.2. Since 1.2,
  1077.   ypserv caches the file handles. This means, you have to call makedbm
  1078.   with the -c option always if you create new maps. Make sure, you are
  1079.   using the new /var/yp/Makefile from ypserv 1.2 or later, or add the -c
  1080.   flag to makedbm in the Makefile. If you don't do that, ypserv will
  1081.   continue to use the old maps, and not the new one.
  1082.  
  1083.   Now edit /var/yp/securenets and /etc/ypserv.conf.  For more
  1084.   information, read the ypserv(8) and ypserv.conf(5) manual pages.
  1085.  
  1086.   Make sure the portmapper (portmap(8)) is running, and start the server
  1087.   "ypserv". The command
  1088.  
  1089.  
  1090.  
  1091.            % rpcinfo -u localhost ypserv
  1092.  
  1093.  
  1094.  
  1095.  
  1096.   should output something like
  1097.  
  1098.  
  1099.  
  1100.            program 100004 version 2 ready and waiting
  1101.  
  1102.  
  1103.  
  1104.  
  1105.   Now generate the NIS (YP) database. On the master, run
  1106.  
  1107.  
  1108.  
  1109.            % /usr/lib/yp/ypinit -m
  1110.  
  1111.  
  1112.  
  1113.  
  1114.   On a slave, make sure that ypwhich -m works. This means, that your
  1115.   slave must be configured as NIS client before you could run
  1116.  
  1117.  
  1118.            % /usr/lib/yp/ypinit -s masterhost
  1119.  
  1120.  
  1121.  
  1122.  
  1123.   to install the host as NIS slave.
  1124.  
  1125.  
  1126.   That's it, your server is up and running.
  1127.  
  1128.   If you have bigger problems, you could start ypserv and ypbind in
  1129.   debug mode on differnt xterms. The debug output should show you, what
  1130.   goes wrong.
  1131.  
  1132.  
  1133.   You might want to edit root's crontab *on the slave* server and add
  1134.   the following lines:
  1135.  
  1136.  
  1137.  
  1138.              20 *    * * *    /usr/lib/yp/ypxfr_1perhour
  1139.              40 6    * * *    /usr/lib/yp/ypxfr_1perday
  1140.              55 6,18 * * *    /usr/lib/yp/ypxfr_2perday
  1141.  
  1142.  
  1143.  
  1144.  
  1145.   This will ensure that most NIS maps are kept up-to-date, even if an
  1146.   update is missed because the slave was down at the time the update was
  1147.   done on the master.
  1148.  
  1149.   You could add a slave at every time later. At first, make sure that
  1150.   the new ypserv has permissions to contact the NIS master. Then run
  1151.  
  1152.  
  1153.            % /usr/lib/yp/ypinit -s masterhost
  1154.  
  1155.  
  1156.  
  1157.  
  1158.   on the new slave, and add the server name to /var/yp/ypservers.  After
  1159.   this, run make in /var/yp to update the maps.
  1160.  
  1161.   If you want to restrict access for users to your NIS server, you'll
  1162.   have to setup the NIS server as a client as well by running ypbind and
  1163.   adding the plus-entries to /etc/passwd _halfway_ the password file.
  1164.   The library functions will ignore all normal entries after the first
  1165.   NIS entry, and will get the rest of the info through NIS. This way the
  1166.   NIS access rules are maintained. example:
  1167.  
  1168.  
  1169.  
  1170.             root:x:0:0:root:/root:/bin/bash
  1171.             daemon:*:1:1:daemon:/usr/sbin:
  1172.             bin:*:2:2:bin:/bin:
  1173.             sys:*:3:3:sys:/dev:
  1174.             sync:*:4:100:sync:/bin:/bin/sync
  1175.             games:*:5:100:games:/usr/games:
  1176.             man:*:6:100:man:/var/catman:
  1177.             lp:*:7:7:lp:/var/spool/lpd:
  1178.             mail:*:8:8:mail:/var/spool/mail:
  1179.             news:*:9:9:news:/var/spool/news:
  1180.             uucp:*:10:50:uucp:/var/spool/uucp:
  1181.             nobody:*:65534:65534:noone at all,,,,:/dev/null:
  1182.             +miquels::::::
  1183.             +:*:::::/etc/NoShell
  1184.             [ All normal users AFTER this line! ]
  1185.             tester:*:299:10:Just a test account:/tmp:
  1186.             miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh
  1187.  
  1188.  
  1189.   The user tester will exist, but have a shell of /etc/NoShell. miquels
  1190.   will have normal access.
  1191.  
  1192.   Alternatively, you could edit the /var/yp/Makefile file and set NIS to
  1193.   use another source password file. On big systems, the NIS password and
  1194.   group files are usually stored in /var/yp/ypfiles/. If you do this the
  1195.   normal tools to administrate the password file such as "passwd",
  1196.   "chfn", "adduser" will not work anymore and you will need special
  1197.   homemade tools for this.
  1198.  
  1199.   However yppasswd, ypchsh and ypchfn will work ofcourse.
  1200.  
  1201.  
  1202.   9.2.  The Server Program yps
  1203.  
  1204.   To set up the "yps" NIS server please refer to the previous paragraph.
  1205.   The "yps" server setup is similar, _but_ not exactly the same so
  1206.   beware if you try to apply the "ypserv" instructions to "yps"!  "yps"
  1207.   is not supported by any author, and contains some security leaks.  You
  1208.   shouldn't really use it !
  1209.  
  1210.   The "yps" NIS server software can be found on:
  1211.  
  1212.  
  1213.  
  1214.          Site                Directory                         File Name
  1215.  
  1216.          ftp.lysator.liu.se  /pub/NYS/servers                  yps-0.21.tar.gz
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.   9.3.  The Program rpc.yppasswdd
  1224.  
  1225.   Whenever users change their passwords, the NIS password database and
  1226.   probably other NIS databases, which depend on the NIS password
  1227.   database, should be updated.  The program "rpc.yppasswdd" is a server
  1228.   that handles password changes and makes sure that the NIS information
  1229.   will be updated accordingly. rpc.yppasswdd is now integrated in
  1230.   ypserv. You don't need the older, separate yppasswd-0.9.tar.gz or
  1231.   yppasswd-0.10.tar.gz, and you shouldn't use them any longer. The
  1232.   rpc.yppasswdd in ypserv 1.3.2 has full shadow support. yppasswd is now
  1233.   part of yp-tools-2.0.tar.gz,
  1234.  
  1235.   You need to start rpc.yppasswdd only on the NIS master server. By
  1236.   default, users are not allowed to change their full name or the login
  1237.   shell.  You could allow this with the -e chfn or -e chsh option.
  1238.  
  1239.  
  1240.  
  1241.  
  1242.   10.  Verifying the NIS/NYS Installation
  1243.  
  1244.   If everything is fine (as it should be), you should be able to verify
  1245.   your installation with a few simple commands. Assuming, for example,
  1246.   your passwd file is being supplied by NIS, the command
  1247.  
  1248.  
  1249.  
  1250.            % ypcat passwd
  1251.  
  1252.  
  1253.  
  1254.  
  1255.   should give you the contents of your NIS passwd file. The command
  1256.  
  1257.  
  1258.  
  1259.            % ypmatch userid passwd
  1260.  
  1261.  
  1262.  
  1263.  
  1264.   (where userid is the login name of an arbitrary user) should give you
  1265.   the user's entry in the NIS passwd file. The "ypcat" and "ypmatch"
  1266.   programs should be included with your distribution of traditional NIS
  1267.   or NYS.
  1268.  
  1269.   If a user couldn't log in, run the following program on the client:
  1270.  
  1271.  
  1272.        #include <stdio.h>
  1273.        #include <pwd.h>
  1274.        #include <sys/types.h>
  1275.  
  1276.        int
  1277.        main(int argc, char *argv[])
  1278.        {
  1279.          struct passwd *pwd;
  1280.  
  1281.          if(argc != 2)
  1282.            {
  1283.              fprintf(stderr,"Usage: getwpnam username\n");
  1284.              exit(1);
  1285.            }
  1286.  
  1287.          pwd=getpwnam(argv[1]);
  1288.  
  1289.          if(pwd != NULL)
  1290.            {
  1291.              printf("name.....: [%s]\n",pwd->pw_name);
  1292.              printf("password.: [%s]\n",pwd->pw_passwd);
  1293.              printf("user id..: [%d]\n", pwd->pw_uid);
  1294.              printf("group id.: [%d]\n",pwd->pw_gid);
  1295.              printf("gecos....: [%s]\n",pwd->pw_gecos);
  1296.              printf("directory: [%s]\n",pwd->pw_dir);
  1297.              printf("shell....: [%s]\n",pwd->pw_shell);
  1298.            }
  1299.          else
  1300.            fprintf(stderr,"User \"%s\" not found!\n",argv[1]);
  1301.  
  1302.          exit(0);
  1303.        }
  1304.  
  1305.  
  1306.  
  1307.  
  1308.   Running this program with the username as parameter, it will print all
  1309.   the information the getpwnam function will give back for this user.
  1310.   This should show you, which entry is incorrect. The most common
  1311.   problem is, that the password field is overwritten with a "*".
  1312.  
  1313.  
  1314.   11.  Common Problems and Troubleshooting NIS
  1315.  
  1316.   Here are some common problems reported by various users:
  1317.  
  1318.  
  1319.   1. The libraries for 4.5.19 are broken. NIS won't work with it.
  1320.  
  1321.   2. If you upgrade the libraries from 4.5.19 to 4.5.24 then the su
  1322.      command breaks. You need to get the su command from the slackware
  1323.      1.2.0 distribution. Incidentally that's where you can get the
  1324.      updated libraries.
  1325.  
  1326.   3. You could run into trouble with NIS and DNS on the same machine
  1327.      using an old a.out distribution. The DNS server occasionally will
  1328.      not bring up NIS.
  1329.  
  1330.   4. When a NIS server goes down and comes up again ypbind starts
  1331.      complaining with messages like:
  1332.  
  1333.  
  1334.               yp_match: clnt_call:
  1335.                           RPC: Unable to receive; errno = Connection refused
  1336.  
  1337.  
  1338.  
  1339.  
  1340.   and logins are refused for those who are registered in the NIS
  1341.   database. Try to login as root and if you succeed, then kill ypbind
  1342.   and start it up again. An update to ypbind 3.3 or higher should also
  1343.   help.
  1344.  
  1345.   5. After upgrade the libc to a version greater then 5.4.20, the YP
  1346.      tools will not work any longer. You need yp-tools 1.2 or later for
  1347.      libc >= 5.4.21 and glibc 2.x and yp-clients 2.2. for earlier
  1348.      versions.  yp-tools 2.0 should work for all libraries.
  1349.  
  1350.   6. In libc 5.4.21 - 5.4.35 yp_maplist is broken, you need 5.4.36 or
  1351.      later, or some YP programs like ypwhich will seg.fault.
  1352.  
  1353.   7. libc 5 with traditional NIS doesn't support shadow passwords over
  1354.      NIS.  You need libc5 + NYS or glibc 2.x.
  1355.  
  1356.   8. ypcat shadow doesn't show the shadow map. This is correct, the name
  1357.      of the shadow map is shadow.byname, not shadow.
  1358.  
  1359.  
  1360.  
  1361.   12.  Frequently Asked Questions
  1362.  
  1363.   Most of your questions should be answered by now. If there are still
  1364.   questions unanswered you might want to post a message to
  1365.  
  1366.  
  1367.  
  1368.            comp.os.linux.help
  1369.  
  1370.  
  1371.  
  1372.  
  1373.   or
  1374.  
  1375.  
  1376.  
  1377.            comp.os.linux.networking
  1378.  
  1379.  
  1380.  
  1381.  
  1382.   or contact one of the authors of this HOWTO.
  1383.  
  1384.  
  1385.  
  1386.  
  1387.