Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca>
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote
products derived from this software without specific prior written
permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

from: @(#)yp.8 1.0 (deraadt) 4/26/93
$FreeBSD: src/share/man/man8/yp.8,v 1.36 2005/01/21 08:36:40 ru Exp $

@APPLE_LICENSE_HEADER_START@

Portions Copyright (c) 2003-2013 Apple Inc. All Rights Reserved.

This file contains Original Code and/or Modifications of Original Code
as defined in and that are subject to the Apple Public Source License
Version 2.0 (the 'License'). You may not use this file except in
compliance with the License. Please obtain a copy of the License at
http://www.opensource.apple.com/apsl/ and read it before using this
file.

The Original Code and all software distributed under the License are
distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
Please see the License for the specific language governing rights and
limitations under the License.

@APPLE_LICENSE_HEADER_END@

.Dd April 5, 1993 .Dt YP 8 .Os .Sh NAME .Nm yp .Nd description of the YP/NIS system .Sh SYNOPSIS .Nm .Sh DESCRIPTION The .Nm YP subsystem allows network access to directory information hosted by .Tn NIS servers. OS X support is provided through the functions .Xr getpwent 3 , .Xr getgrent 3 , .Xr getfsent 3 , .Xr getnetgrent 3 , .Xr gethostent 3 , .Xr getnetent 3 , .Xr getrpcent 3 , .Xr getprotoent 3 , .Xr getservent 3 , .Xr ethers 3 and other related functions. Queries to .Tn NIS servers are sent by the .Nm opendirectoryd daemon. The configuration of .Tn NIS clients is further described in the .Xr opendirectoryd 8 manual page.

p The .Nm YP subsystem is started automatically by .Xr launchd 8 if an .Tn NIS domain is specified in the

a /etc/defaultdomain configuration file, and if the directory

a /var/yp exists (which it does in the default distribution).

p .Tn NIS is an .Tn RPC Ns -based client/server system that allows a group of machines within an .Tn NIS domain to share a common set of configuration files. This permits a system administrator to set up .Tn NIS client systems with only minimal configuration data and add, remove or modify configuration data from a single location.

p The canonical copies of all .Tn NIS information are stored on a single machine called the .Tn NIS .Em "master server" . The databases used to store the information are called .Tn NIS .Em maps . A single .Tn NIS server can support several domains at once, therefore it is possible to have several such directories, one for each supported domain. Each domain will have its own independent set of maps.

p Client .Tn NIS systems receive all .Tn NIS data in .Tn ASCII form.

p There are three main types of .Tn NIS systems: l -enum t .Tn NIS clients, which query .Tn NIS servers for information. t .Tn NIS master servers, which maintain the canonical copies of all .Tn NIS maps. t .Tn NIS slave servers, which maintain backup copies of .Tn NIS maps that are periodically updated by the master. .El

p OS X systems may be configured as .Tn NIS clients, but not as master or slave servers.

p A .Tn NIS client establishes what is called a .Em binding to a particular .Tn NIS server using the .Xr ypbind 8 daemon. The .Xr ypbind 8 utility checks the system's default domain (as set by the .Xr domainname 1 command) and begins broadcasting .Tn RPC requests on the local network. These requests specify the name of the domain for which .Xr ypbind 8 is attempting to establish a binding. If a server that has been configured to serve the requested domain receives one of the broadcasts, it will respond to .Xr ypbind 8 , which will record the server's address. If there are several servers available (a master and several slaves, for example), .Xr ypbind 8 will use the address of the first one to respond. From that point on, the client system will direct all of its .Tn NIS requests to that server. The .Xr ypbind 8 utility will occasionally .Dq ping the server to make sure it is still up and running. If it fails to receive a reply to one of its pings within a reasonable amount of time, .Xr ypbind 8 will mark the domain as unbound and begin broadcasting again in the hopes of locating another server.

p .Tn NIS master and slave servers handle all .Tn NIS requests with the .Xr ypserv 8 daemon. The .Xr ypserv 8 utility is responsible for receiving incoming requests from .Tn NIS clients, translating the requested domain and map name to a path to the corresponding database file and transmitting data from the database back to the client. There is a specific set of requests that .Xr ypserv 8 is designed to handle, most of which are implemented as functions within the standard system libraries: l -tag -width ".Fn yp_master" t Fn yp_order check the creation date of a particular map t Fn yp_master obtain the name of the .Tn NIS master server for a given map/domain t Fn yp_match lookup the data corresponding to a given in key in a particular map/domain t Fn yp_first obtain the first key/data pair in a particular map/domain t Fn yp_next pass .Xr ypserv 8 a key in a particular map/domain and have it return the key/data pair immediately following it (the functions .Fn yp_first and .Fn yp_next can be used to do a sequential search of an .Tn NIS map) t Fn yp_all retrieve the entire contents of a map .El

p There are a few other requests which .Xr ypserv 8 is capable of handling (i.e., acknowledge whether or not you can handle a particular domain

q Dv YPPROC_DOMAIN , or acknowledge only if you can handle the domain and be silent otherwise

q Dv YPPROC_DOMAIN_NONACK ) but these requests are usually generated only by .Xr ypbind 8 and are not meant to be used by standard utilities. .Sh HISTORY The .Nm YP subsystem was written from the ground up by .An Theo de Raadt to be compatible to Sun's implementation. Bug fixes, improvements and .Tn NIS server support were later added by .An Bill Paul . The server-side code was originally written by .An Peter Eriksson and .An Tobias Reber and is subject to the GNU Public License. No Sun code was referenced.

p OS X .Tn NIS client software is derived from FreeBSD.