xref: /dragonfly/share/man/man8/yp.8 (revision 9dbf638f)
1.\" Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca>
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
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
14.\"    permission.
15.\"
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
26.\" SUCH DAMAGE.
27.\"
28.\"     from: @(#)yp.8	1.0 (deraadt) 4/26/93
29.\" $FreeBSD: src/share/man/man8/yp.8,v 1.30.2.2 2002/09/30 08:19:41 max Exp $
30.\" $DragonFly: src/share/man/man8/yp.8,v 1.2 2003/06/17 04:37:01 dillon Exp $
31.\"
32.Dd April 5, 1993
33.Dt YP 8
34.Os
35.Sh NAME
36.Nm yp
37.Nd description of the YP/NIS system
38.Sh SYNOPSIS
39.Nm
40.Sh DESCRIPTION
41The
42.Nm YP
43subsystem allows network management of passwd, group, netgroup, hosts,
44services, rpc, bootparams and ethers file
45entries through the functions
46.Xr getpwent 3 ,
47.Xr getgrent 3 ,
48.Xr getnetgrent 3 ,
49.Xr gethostent 3 ,
50.Xr getnetent 3 ,
51.Xr getrpcent 3 ,
52and
53.Xr ethers 3 .
54The
55.Xr bootparamd 8
56daemon makes direct
57.Tn NIS
58library calls since there are no
59functions in the standard C library for reading bootparams.
60.Tn NIS
61support for the hosts, services and rpc databases is enabled by
62uncommenting the
63.Dq Li nis
64line in
65.Pa /etc/host.conf .
66.Tn NIS
67support for the remaining services is
68activated by adding a special
69.Ql +
70entry to the appropriate file.
71.Pp
72The
73.Nm YP
74subsystem is started automatically in
75.Pa /etc/rc
76if it has been initialized in
77.Pa /etc/rc.conf
78and if the directory
79.Pa /var/yp
80exists (which it does in the default distribution).
81The default
82.Tn NIS
83domain must also be set with the
84.Xr domainname 1
85command, which will happen automatically at system startup if it is
86specified in
87.Pa /etc/rc.conf .
88.Pp
89.Tn NIS
90is an
91.Tn RPC Ns -based
92client/server system that allows a group of
93machines within an
94.Tn NIS
95domain to share a common set of configuration files.
96This permits a system
97administrator to set up
98.Tn NIS
99client systems with only minimal configuration
100data and add, remove or modify configuration data from a single location.
101.Pp
102The canonical copies of all
103.Tn NIS
104information are stored on a single machine
105called the
106.Tn NIS
107.Em "master server" .
108The databases used to store the information are called
109.Tn NIS
110.Em maps .
111In
112.Fx ,
113these maps are stored in
114.Pa /var/yp/ Ns Aq Ar domainname
115where
116.Aq Ar domainname
117is the name of the
118.Tn NIS
119domain being served.
120A single
121.Tn NIS
122server can
123support several domains at once, therefore it is possible to have several
124such directories, one for each supported domain.
125Each domain will have
126its own independent set of maps.
127.Pp
128In
129.Fx ,
130the
131.Tn NIS
132maps are Berkeley DB hashed database files (the
133same format used for the
134.Xr passwd 5
135database files).
136Other operating systems that support
137.Tn NIS
138use old-style
139.Nm ndbm
140databases instead (largely because Sun Microsystems originally based
141their
142.Tn NIS
143implementation on
144.Nm ndbm ,
145and other vendors have simply licensed
146Sun's code rather than design their own implementation with a different
147database format).
148On these systems, the databases are generally split
149into
150.Pa .dir
151and
152.Pa .pag
153files which the
154.Nm ndbm
155code uses to hold separate parts of the hash
156database.
157The Berkeley DB hash method instead uses a single file for
158both pieces of information.
159This means that while you may have
160.Pa passwd.byname.dir
161and
162.Pa passwd.byname.pag
163files on other operating systems (both of which are really parts of the
164same map),
165.Fx
166will have only one file called
167.Pa passwd.byname .
168The difference in format is not significant: only the
169.Tn NIS
170server,
171.Xr ypserv 8 ,
172and related tools need to know the database format of the
173.Tn NIS
174maps.
175Client
176.Tn NIS
177systems receive all
178.Tn NIS
179data in
180.Tn ASCII
181form.
182.Pp
183There are three main types of
184.Tn NIS
185systems:
186.Bl -enum
187.It
188.Tn NIS
189clients,
190which query
191.Tn NIS
192servers for information.
193.It
194.Tn NIS
195master servers,
196which maintain the canonical copies of all
197.Tn NIS
198maps.
199.It
200.Tn NIS
201slave servers,
202which maintain backup copies of
203.Tn NIS
204maps that are periodically
205updated by the master.
206.El
207.Pp
208A
209.Tn NIS
210client establishes what is called a
211.Em binding
212to a particular
213.Tn NIS
214server using the
215.Xr ypbind 8
216daemon.
217.Xr Ypbind 8
218checks the system's default domain (as set by the
219.Xr domainname 1
220command) and begins broadcasting
221.Tn RPC
222requests on the local network.
223These requests specify the name of the domain for which
224.Xr ypbind 8
225is attempting to establish a binding.
226If a server that has been
227configured to serve the requested domain receives one of the broadcasts,
228it will respond to
229.Xr ypbind 8 ,
230which will record the server's address.
231If there are several servers
232available (a master and several slaves, for example),
233.Xr ypbind 8
234will use the address of the first one to respond.
235From that point
236on, the client system will direct all of its
237.Tn NIS
238requests to that server.
239.Xr Ypbind 8
240will occasionally
241.Dq ping
242the server to make sure it is still up
243and running.
244If it fails to receive a reply to one of its pings
245within a reasonable amount of time,
246.Xr ypbind 8
247will mark the domain as unbound and begin broadcasting again in the
248hopes of locating another server.
249.Pp
250.Tn NIS
251master and slave servers handle all
252.Tn NIS
253requests with the
254.Xr ypserv 8
255daemon.
256.Xr Ypserv 8
257is responsible for receiving incoming requests from
258.Tn NIS
259clients,
260translating the requested domain and map name to a path to the
261corresponding database file and transmitting data from the database
262back to the client.
263There is a specific set of requests that
264.Xr ypserv 8
265is designed to handle, most of which are implemented as functions
266within the standard C library:
267.Bl -tag -width ".Fn yp_master"
268.It Fn yp_order
269check the creation date of a particular map
270.It Fn yp_master
271obtain the name of the
272.Tn NIS
273master server for a given
274map/domain
275.It Fn yp_match
276lookup the data corresponding to a given in key in a particular
277map/domain
278.It Fn yp_first
279obtain the first key/data pair in a particular map/domain
280.It Fn yp_next
281pass
282.Xr ypserv 8
283a key in a particular map/domain and have it return the
284key/data pair immediately following it (the functions
285.Fn yp_first
286and
287.Fn yp_next
288can be used to do a sequential search of an
289.Tn NIS
290map)
291.It Fn yp_all
292retrieve the entire contents of a map
293.El
294.Pp
295There are a few other requests which
296.Xr ypserv 8
297is capable of handling (i.e. acknowledge whether or not you can handle
298a particular domain
299.Pq Dv YPPROC_DOMAIN ,
300or acknowledge only if you can handle the domain and be silent otherwise
301.Pq Dv YPPROC_DOMAIN_NONACK )
302but
303these requests are usually generated only by
304.Xr ypbind 8
305and are not meant to be used by standard utilities.
306.Pp
307On networks with a large number of hosts, it is often a good idea to
308use a master server and several slaves rather than just a single master
309server.
310A slave server provides the exact same information as a master
311server: whenever the maps on the master server are updated, the new
312data should be propagated to the slave systems using the
313.Xr yppush 8
314command.
315The
316.Tn NIS
317.Pa Makefile
318.Pq Pa /var/yp/Makefile
319will do this automatically if the administrator comments out the
320line which says
321.Dq Li NOPUSH=true
322.Va ( NOPUSH
323is set to true by default because the default configuration is
324for a small network with only one
325.Tn NIS
326server).
327The
328.Xr yppush 8
329command will initiate a transaction between the master and slave
330during which the slave will transfer the specified maps from the
331master server using
332.Xr ypxfr 8 .
333(The slave server calls
334.Xr ypxfr 8
335automatically from within
336.Xr ypserv 8 ;
337therefore it is not usually necessary for the administrator
338to use it directly.
339It can be run manually if
340desired, however.)
341Maintaining
342slave servers helps improve
343.Tn NIS
344performance on large
345networks by:
346.Bl -bullet
347.It
348Providing backup services in the event that the
349.Tn NIS
350master crashes
351or becomes unreachable
352.It
353Spreading the client load out over several machines instead of
354causing the master to become overloaded
355.It
356Allowing a single
357.Tn NIS
358domain to extend beyond
359a local network (the
360.Xr ypbind 8
361daemon might not be able to locate a server automatically if it resides on
362a network outside the reach of its broadcasts.
363It is possible to force
364.Xr ypbind 8
365to bind to a particular server with
366.Xr ypset 8
367but this is sometimes inconvenient.
368This problem can be avoided simply by
369placing a slave server on the local network.)
370.El
371.Pp
372The
373.Fx
374.Xr ypserv 8
375is specially designed to provided enhanced security (compared to
376other
377.Tn NIS
378implementations) when used exclusively with
379.Fx
380client
381systems.
382The
383.Fx
384password database system (which is derived directly
385from
386.Bx 4.4 )
387includes support for
388.Em "shadow passwords" .
389The standard password database does not contain users' encrypted
390passwords: these are instead stored (along with other information)
391in a separate database which is accessible only by the super-user.
392If the encrypted password database were made available as an
393.Tn NIS
394map, this security feature would be totally disabled, since any user
395is allowed to retrieve
396.Tn NIS
397data.
398.Pp
399To help prevent this,
400.Fx Ns 's
401.Tn NIS
402server handles the shadow password maps
403.Pa ( master.passwd.byname
404and
405.Pa master.passwd.byuid )
406in a special way: the server will only provide access to these
407maps in response to requests that originate on privileged ports.
408Since only the super-user is allowed to bind to a privileged port,
409the server assumes that all such requests come from privileged
410users.
411All other requests are denied: requests from non-privileged
412ports will receive only an error code from the server.
413Additionally,
414.Fx Ns 's
415.Xr ypserv 8
416includes support for
417.An Wietse Venema Ns 's
418tcp wrapper package; with tcp
419wrapper support enabled, the administrator can configure
420.Xr ypserv 8
421to respond only to selected client machines.
422.Pp
423While these enhancements provide better security than stock
424.Tn NIS Ns ,
425they are by no means 100% effective.
426It is still possible for
427someone with access to your network to spoof the server into disclosing
428the shadow password maps.
429.Pp
430On the client side,
431.Fx Ns 's
432.Xr getpwent 3
433functions will automatically search for the
434.Pa master.passwd
435maps and use them if they exist.
436If they do, they will be used, and
437all fields in these special maps (class, password age and account
438expiration) will be decoded.
439If they are not found, the standard
440.Pa passwd
441maps will be used instead.
442.Sh COMPATIBILITY
443When using a
444.No non- Ns Fx
445.Tn NIS
446server for
447.Xr passwd 5
448files, it is unlikely that the default MD5-based format that
449.Fx
450uses for passwords will be accepted by it.
451If this is the case, the value of the
452.Va passwd_format
453setting in
454.Xr login.conf 5
455should be changed to
456.Qq Li des
457for compatibility.
458.Pp
459Some systems, such as
460.Tn SunOS
4614.x, need
462.Tn NIS
463to be running in order
464for their hostname resolution functions
465.Fn ( gethostbyname ,
466.Fn gethostbyaddr ,
467etc.) to work properly.
468On these systems,
469.Xr ypserv 8
470performs
471.Tn DNS
472lookups when asked to return information about
473a host that does not exist in its
474.Pa hosts.byname
475or
476.Pa hosts.byaddr
477maps.
478.Fx Ns 's
479resolver uses
480.Tn DNS
481by default (it can be made to use
482.Tn NIS ,
483if desired), therefore its
484.Tn NIS
485server does not do
486.Tn DNS
487lookups
488by default.
489However,
490.Xr ypserv 8
491can be made to perform
492.Tn DNS
493lookups if it is started with a special
494flag.
495It can also be made to register itself as an
496.Tn NIS
497v1 server
498in order to placate certain systems that insist on the presence of
499a v1 server
500.No ( Fx
501uses only
502.Tn NIS
503v2, but many other systems,
504including
505.Tn SunOS
5064.x, search for both a v1 and v2 server when binding).
507.Fx Ns 's
508.Xr ypserv 8
509does not actually handle
510.Tn NIS
511v1 requests, but this
512.Dq "kludge mode"
513is useful for silencing stubborn systems that search for both
514a v1 and v2 server.
515.Pp
516(Please see the
517.Xr ypserv 8
518manual page for a detailed description of these special features
519and flags.)
520.Sh BUGS
521While
522.Fx
523now has both
524.Tn NIS
525client and server capabilities, it does not yet have support for
526.Xr ypupdated 8
527or the
528.Fn yp_update
529function.
530Both of these require secure
531.Tn RPC ,
532which
533.Fx
534does not
535support yet either.
536.Pp
537The
538.Xr getservent 3
539and
540.Xr getprotoent 3
541functions do not yet have
542.Tn NIS
543support.
544Fortunately, these files
545do not need to be updated that often.
546.Pp
547Many more manual pages should be written, especially
548.Xr ypclnt 3 .
549For the time being, seek out a local Sun machine and read the
550manuals for there.
551.Pp
552Neither Sun nor this author have found a clean way to handle
553the problems that occur when ypbind cannot find its server
554upon bootup.
555.Sh HISTORY
556The
557.Nm YP
558subsystem was written from the ground up by
559.An Theo de Raadt
560to be compatible to Sun's implementation.
561Bug fixes, improvements
562and
563.Tn NIS
564server support were later added by
565.An Bill Paul .
566The server-side code was originally written by
567.An Peter Eriksson
568and
569.An Tobias Reber
570and is subject to the GNU Public License.
571No Sun code was
572referenced.
573