(linenum→info "unix/slp.c:2238")

glibc/2.7/hesiod/README.hesiod

    1: The GNU C library contains an NSS module for the Hesiod name service.
    2: Hesiod is a general name service for a variety of applications and is
    3: based on the Berkeley Internet Name Daemon (BIND).
    4: 
    5: Introduction
    6: ============
    7: 
    8: The Hesiod NSS module implements access to all relevant standard
    9: Hesiod types, which means that Hesiod can be used for the `group',
   10: `passwd' and `services' databases.  There is however a restriction.
   11: In the same way that it is impossible to use `gethostent()' to iterate
   12: over all the data provided by DNS, it is not possible to scan the
   13: entire Hesiod database by means of `getgrent()', `getpwent()' and
   14: `getservent()'.  Besides, Hesiod only provides support for looking up
   15: services by name and not for looking them up by port.  In essence this
   16: means that the Hesiod name service is only consulted as a result of
   17: one of the following function calls:
   18: 
   19:   * getgrname(), getgrgid()
   20:   * getpwname(), getpwuid()
   21:   * getservbyname()
   22: 
   23: and their reentrant counterparts.
   24: 
   25: 
   26: Configuring your systems
   27: ========================
   28: 
   29: Configuring your systems to make use the Hesiod name service requires
   30: one or more of the following steps, depending on whether you are
   31: already running Hesiod in your network.
   32: 
   33: Configuring NSS
   34: ---------------
   35: 
   36: First you should modify the file `/etc/nsswitch.conf' to tell
   37: NSS for which database you want to use the Hesiod name service.  If
   38: you want to use Hesiod for all databases it can handle your
   39: configuration file could look like this:
   40: 
   41:   # /etc/nsswitch.conf
   42:   #
   43:   # Example configuration of GNU Name Service Switch functionality.
   44:   #
   45: 
   46:   passwd:         db files hesiod
   47:   group:          db files hesiod
   48:   shadow:         db files
   49: 
   50:   hosts:          files dns
   51:   networks:       files dns
   52: 
   53:   protocols:      db files
   54:   services:       db files hesiod
   55:   ethers:         db files
   56:   rpc:            db files
   57: 
   58: For more information on NSS, please refer to the `The GNU C Library
   59: Reference Manual'.
   60: 
   61: 
   62: Configuring Hesiod
   63: ------------------
   64: 
   65: Next, you will have to configure Hesiod.  If you are already running
   66: Hesiod in your network, you probably already have a file named
   67: `hesiod.conf' on your machines (probably as `/etc/hesiod.conf' or
   68: `/usr/local/etc/hesiod.conf').  The Hesiod NSS module looks for
   69: `/etc/hesiod.conf' by default.  If there is no configuration file you
   70: will want to create your own.  It should look something like:
   71: 
   72:   rhs=.your.domain
   73:   lhs=.ns
   74:   classes=in,hs
   75: 
   76: The optional classes settings specifies which DNS classes Hesiod
   77: should do lookups in.  Possible values are IN (the preferred class)
   78: and  HS (the deprecated class, still used by some sites).
   79: You may specify both classes separated by a comma to try one class
   80: first and then the other if no entry is available in the first
   81: class.  The default value of the classes variable is `IN,HS'.
   82: 
   83: The value of rhs can be overridden by the environment variable
   84: `HES_DOMAIN'.
   85: 
   86: Configuring your name servers
   87: -----------------------------
   88: 
   89: In addition, if you are not already running Hesiod in your network,
   90: you need to create Hesiod information on your central name servers.
   91: You need to run `named' from BIND 4.9 or higher on these servers, and
   92: make them authoritative for the domain `ns.your.domain' with a line in
   93: `/etc/named.boot' reading something like:
   94: 
   95:   primary         ns.your.domain          named.hesiod
   96: 
   97: or if you are using the new BIND 8.1 or higher add something to
   98: `/etc/named.conf' like:
   99: 
  100:   zone "ns.your.domain" {
  101:           type master;
  102:           file "named.hesiod";
  103:   };
  104: 
  105: Then in the BIND working directory (usually `/var/named') create the
  106: file `named.hesiod' containing data that looks something like:
  107: 
  108:   ; SOA and NS records.
  109:   @       IN      SOA     server1.your.domain admin-address.your.domain (
  110:                   40000           ; serial - database version number
  111:                   1800            ; refresh - sec servers
  112:                   300             ; retry - for refresh
  113:                   3600000         ; expire - unrefreshed data
  114:                   7200 )          ; min
  115:                   NS      server1.your.domain
  116:                   NS      server2.your.domain
  117: 
  118:   ; Actual Hesiod data.
  119:   libc.group      TXT     "libc:*:123:gnu,gnat"
  120:   123.gid         CNAME   libc.group
  121:   gnu.passwd      TXT     "gnu:*:4567:123:GNU:/home/gnu:/bin/bash"
  122:   456.uid         CNAME   mark.passwd
  123:   nss.service     TXT     "nss tcp 789 switch sw "
  124:   nss.service     TXT     "nss udp 789 switch sw"
  125: 
  126: where `libc' is an example of a group, `gnu' an example of an user,
  127: and `nss' an example of a service.  Note that the format used to
  128: describe services differs from the format used in `/etc/services'.
  129: For more information on `named' refer to the `Name Server Operations
  130: Guide for BIND' that is included in the BIND distribution.
  131: 
  132: 
  133: Security
  134: ========
  135: 
  136: Note that the information stored in the Hesiod database in principle
  137: is publicly available.  Care should be taken with including vulnerable
  138: information like encrypted passwords in the Hesiod database.  There
  139: are some ways to improve security by using features provided by
  140: `named' (see the discussion about `secure zones' in the BIND
  141: documentation), but one should keep in mind that Hesiod was never
  142: intended to distribute passwords.  In the origional design
  143: authenticating users was the job of the Kerberos service.
  144: 
  145: 
  146: More information
  147: ================
  148: 
  149: For more information on the Hesiod name service take a look at some of
  150: the papers in ftp://athena-dist.mit.edu:/pub/ATHENA/usenix and the
  151: documentation that accompanies the source code for the Hesiod name
  152: service library in ftp://athena-dist.mit.edu:/pub/ATHENA/hesiod.
  153: 
  154: There is a mailing list at MIT for Hesiod users, hesiod@mit.edu.  To
  155: get yourself on or off the list, send mail to hesiod-request@mit.edu.
Syntax (Markdown)