1 .\" Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca>
2 .\" All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\" notice, this list of conditions and the following disclaimer in the
11 .\" documentation and/or other materials provided with the distribution.
12 .\" 3. The name of the author may not be used to endorse or promote
13 .\" products derived from this software without specific prior written
16 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
17 .\" OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
20 .\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" from: @(#)yp.8 1.0 (deraadt) 4/26/93
29 .\" $FreeBSD: src/share/man/man8/yp.8,v 1.36 2005/01/21 08:36:40 ru Exp $
36 .Nd description of the YP/NIS system
42 subsystem allows network management of passwd, group, netgroup, hosts,
43 services, rpc, bootparams and ethers file
44 entries through the functions
57 library calls since there are no
58 functions in the standard C library for reading bootparams.
65 subsystem is started automatically by
69 domain is specified in the
70 .Pa /etc/defaultdomain
74 exists (which it does in the default distribution).
79 client/server system that allows a group of
82 domain to share a common set of configuration files.
84 administrator to set up
86 client systems with only minimal configuration
87 data and add, remove or modify configuration data from a single location.
89 The canonical copies of all
91 information are stored on a single machine
95 The databases used to store the information are called
100 these maps are stored in
101 .Pa /var/yp/ Ns Aq Ar domainname
110 support several domains at once, therefore it is possible to have several
111 such directories, one for each supported domain.
112 Each domain will have
113 its own independent set of maps.
119 maps are Berkeley DB hashed database files (the
120 same format used for the
123 Other operating systems that support
127 databases instead (largely because Sun Microsystems originally based
132 and other vendors have simply licensed
133 Sun's code rather than design their own implementation with a different
135 On these systems, the databases are generally split
142 code uses to hold separate parts of the hash
144 The Berkeley DB hash method instead uses a single file for
145 both pieces of information.
146 This means that while you may have
147 .Pa passwd.byname.dir
149 .Pa passwd.byname.pag
150 files on other operating systems (both of which are really parts of the
153 will have only one file called
155 The difference in format is not significant: only the
159 and related tools need to know the database format of the
170 There are three main types of
179 servers for information.
183 which maintain the canonical copies of all
189 which maintain backup copies of
191 maps that are periodically
192 updated by the master.
197 client establishes what is called a
206 utility checks the system's default domain (as set by the
208 command) and begins broadcasting
210 requests on the local network.
211 These requests specify the name of the domain for which
213 is attempting to establish a binding.
214 If a server that has been
215 configured to serve the requested domain receives one of the broadcasts,
218 which will record the server's address.
219 If there are several servers
220 available (a master and several slaves, for example),
222 will use the address of the first one to respond.
224 on, the client system will direct all of its
226 requests to that server.
229 utility will occasionally
231 the server to make sure it is still up
233 If it fails to receive a reply to one of its pings
234 within a reasonable amount of time,
236 will mark the domain as unbound and begin broadcasting again in the
237 hopes of locating another server.
240 master and slave servers handle all
247 utility is responsible for receiving incoming requests from
250 translating the requested domain and map name to a path to the
251 corresponding database file and transmitting data from the database
253 There is a specific set of requests that
255 is designed to handle, most of which are implemented as functions
256 within the standard C library:
257 .Bl -tag -width ".Fn yp_master"
259 check the creation date of a particular map
261 obtain the name of the
263 master server for a given
266 lookup the data corresponding to a given in key in a particular
269 obtain the first key/data pair in a particular map/domain
273 a key in a particular map/domain and have it return the
274 key/data pair immediately following it (the functions
278 can be used to do a sequential search of an
282 retrieve the entire contents of a map
285 There are a few other requests which
287 is capable of handling (i.e., acknowledge whether or not you can handle
289 .Pq Dv YPPROC_DOMAIN ,
290 or acknowledge only if you can handle the domain and be silent otherwise
291 .Pq Dv YPPROC_DOMAIN_NONACK )
293 these requests are usually generated only by
295 and are not meant to be used by standard utilities.
297 On networks with a large number of hosts, it is often a good idea to
298 use a master server and several slaves rather than just a single master
300 A slave server provides the exact same information as a master
301 server: whenever the maps on the master server are updated, the new
302 data should be propagated to the slave systems using the
308 .Pq Pa /var/yp/Makefile
309 will do this automatically if the administrator comments out the
313 is set to true by default because the default configuration is
314 for a small network with only one
319 command will initiate a transaction between the master and slave
320 during which the slave will transfer the specified maps from the
323 (The slave server calls
325 automatically from within
327 therefore it is not usually necessary for the administrator
329 It can be run manually if
332 slave servers helps improve
338 Providing backup services in the event that the
341 or becomes unreachable
343 Spreading the client load out over several machines instead of
344 causing the master to become overloaded
348 domain to extend beyond
351 daemon might not be able to locate a server automatically if it resides on
352 a network outside the reach of its broadcasts.
353 It is possible to force
355 to bind to a particular server with
357 but this is sometimes inconvenient.
358 This problem can be avoided simply by
359 placing a slave server on the local network.)
365 is specially designed to provide enhanced security (compared to
368 implementations) when used exclusively with
374 password database system (which is derived directly
378 .Em "shadow passwords" .
379 The standard password database does not contain users' encrypted
380 passwords: these are instead stored (along with other information)
381 in a separate database which is accessible only by the super-user.
382 If the encrypted password database were made available as an
384 map, this security feature would be totally disabled, since any user
385 is allowed to retrieve
389 To help prevent this,
392 server handles the shadow password maps
393 .Pa ( master.passwd.byname
395 .Pa master.passwd.byuid )
396 in a special way: the server will only provide access to these
397 maps in response to requests that originate on privileged ports.
398 Since only the super-user is allowed to bind to a privileged port,
399 the server assumes that all such requests come from privileged
401 All other requests are denied: requests from non-privileged
402 ports will receive only an error code from the server.
407 .An Wietse Venema Ns 's
408 tcp wrapper package; with tcp
409 wrapper support enabled, the administrator can configure
411 to respond only to selected client machines.
413 While these enhancements provide better security than stock
415 they are by no means 100% effective.
416 It is still possible for
417 someone with access to your network to spoof the server into disclosing
418 the shadow password maps.
423 functions will automatically search for the
425 maps and use them if they exist.
426 If they do, they will be used, and
427 all fields in these special maps (class, password age and account
428 expiration) will be decoded.
429 If they are not found, the standard
431 maps will be used instead.
438 files, it is unlikely that the default MD5-based format that
440 uses for passwords will be accepted by it.
441 If this is the case, the value of the
449 Some systems, such as
453 to be running in order
454 for their hostname resolution functions
455 .Fn ( gethostbyname ,
457 etc.) to work properly.
462 lookups when asked to return information about
463 a host that does not exist in its
471 by default (it can be made to use
473 if desired), therefore its
481 can be made to perform
483 lookups if it is started with a special
485 It can also be made to register itself as an
488 in order to placate certain systems that insist on the presence of
493 v2, but many other systems,
496 4.x, search for both a v1 and v2 server when binding).
499 does not actually handle
501 v1 requests, but this
503 is useful for silencing stubborn systems that search for both
508 manual page for a detailed description of these special features
513 subsystem was written from the ground up by
515 to be compatible to Sun's implementation.
516 Bug fixes, improvements
519 server support were later added by
521 The server-side code was originally written by
525 and is subject to the GNU Public License.
533 client and server capabilities, it does not yet have support for
538 Both of these require secure
549 functions do not yet have
552 Fortunately, these files
553 do not need to be updated that often.
555 Many more manual pages should be written, especially
557 For the time being, seek out a local Sun machine and read the
560 Neither Sun nor this author have found a clean way to handle
561 the problems that occur when ypbind cannot find its server