]> git.sur5r.net Git - openldap/commitdiff
Revision 02
authorHoward Chu <hyc@openldap.org>
Mon, 10 Aug 2009 02:08:41 +0000 (02:08 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 10 Aug 2009 02:08:41 +0000 (02:08 +0000)
doc/drafts/draft-howard-rfc2307bis-xx.txt
doc/drafts/draft-howard-rfc2307bis-xx.xml [new file with mode: 0644]

index 74ebd785528ca2f271483035b5b5ccf68db8f09d..74bfdc7c268053c8375e5fe9de68f60b10e91084 100644 (file)
 
 
-Application Working Group                                      L. Howard
-INTERNET-DRAFT                                             PADL Software
-Expires in six months                                          M. Ansari
-                                                                Infoblox
 
-                                                        20 February 2005
-Intended Category: Informational
-Obsoletes: RFC 2307
+Network Working Group                                          L. Howard
+Internet-Draft                                             PADL Software
+Obsoletes: 2307 (if approved)                                H. Chu, Ed.
+Intended status: Informational                               Symas Corp.
+Expires: February 10, 2010                                August 9, 2009
 
 
+      An Approach for Using LDAP as a Network Information Service
+                     draft-howard-rfc2307bis-02.txt
 
+Status of this Memo
 
-      An Approach for Using LDAP as a Network Information Service
-                    <draft-howard-rfc2307bis-01.txt>
+   This Internet-Draft is submitted to IETF in full conformance with the
+   provisions of BCP 78 and BCP 79.
 
+   Internet-Drafts are working documents of the Internet Engineering
+   Task Force (IETF), its areas, and its working groups.  Note that
+   other groups may also distribute working documents as Internet-
+   Drafts.
 
-Status of this Memo
+   Internet-Drafts are draft documents valid for a maximum of six months
+   and may be updated, replaced, or obsoleted by other documents at any
+   time.  It is inappropriate to use Internet-Drafts as reference
+   material or to cite them other than as "work in progress."
 
-     This document is intended to be, after appropriate review and revi-
-     sion, submitted to the RFC Editor for publication as an Experimen-
-     tal document.  Distribution of this memo is unlimited.  Technical
-     discussion of this document will take place on the IETF LDAP Exten-
-     sions mailing list <ldapext@ietf.org>.  Please send editorial com-
-     ments directly to the author <Kurt@OpenLDAP.org>.
+   The list of current Internet-Drafts can be accessed at
+   http://www.ietf.org/ietf/1id-abstracts.txt.
 
-     By submitting this Internet-Draft, I accept the provisions of Sec-
-     tion 4 of RFC 3667.  By submitting this Internet-Draft, I certify
-     that any applicable patent or other IPR claims of which I am aware
-     have been disclosed, or will be disclosed, and any of which I
-     become aware will be disclosed, in accordance with RFC 3668.
+   The list of Internet-Draft Shadow Directories can be accessed at
+   http://www.ietf.org/shadow.html.
 
-     Internet-Drafts are working documents of the Internet Engineering
-     Task Force (IETF), its areas, and its working groups. Note that
-     other groups may also distribute working documents as Internet-
-     Drafts.
+   This Internet-Draft will expire on February 10, 2010.
 
-     Internet-Drafts are draft documents valid for a maximum of six
-     months and may be updated, replaced, or obsoleted by other docu-
-     ments at any time. It is inappropriate to use Internet-Drafts as
-     reference material or to cite them other than as "work in
-     progress."
+Copyright Notice
 
-     The list of current Internet-Drafts can be accessed at
-     http://www.ietf.org/1id-abstracts.html
+   Copyright (c) 2009 IETF Trust and the persons identified as the
+   document authors.  All rights reserved.
+
+   This document is subject to BCP 78 and the IETF Trust's Legal
+   Provisions Relating to IETF Documents in effect on the date of
+   publication of this document (http://trustee.ietf.org/license-info).
+   Please review these documents carefully, as they describe your rights
+   and restrictions with respect to this document.
 
-     The list of Internet-Draft Shadow Directories can be accessed at
-     http://www.ietf.org/shadow.html
 
 
 
 
-Howard                                                         [Page 1]
-\f
-Internet Draft              NIS X.500 schema               February 2005
 
 
-     Copyright (C) The Internet Society (2005).  All Rights Reserved.
 
-     Please see the Full Copyright section near the end of this document
-     for more information.
+Howard & Chu            Expires February 10, 2010               [Page 1]
+\f
+Internet-Draft           LDAP NameService Schema             August 2009
 
 
 Abstract
 
-     This document describes a mechanism for mapping entities related to
-     TCP/IP and the UNIX system into X.500 [X500] entries so that they
-     may be resolved with the Lightweight Directory Access Protocol
-     [RFC2251]. A set of attribute types and object classes are pro-
-     posed, along with specific guidelines for interpreting them.
-
-     The intention is to assist the deployment of LDAP as an organiza-
-     tional nameservice. No proposed solutions are intended as standards
-     for the Internet.  Rather, it is hoped that a general consensus
-     will emerge as to the appropriate solution to such problems, lead-
-     ing eventually to the adoption of standards. The proposed mechanism
-     has already been implemented with some success.
-
-
-1.   Background and Motivation
-
-     The UNIX (R) operating system, and its derivatives (specifically,
-     those which support TCP/IP and conform to the X/Open Single UNIX
-     specification [XOPEN]) require a means of looking up entities, by
-     matching them against search criteria or by enumeration. (Other
-     operating systems that support TCP/IP may provide some means of
-     resolving some of these entities. This schema is applicable to
-     those environments also.)
-
-     These entities include users, groups, IP services (which map names
-     to IP ports and protocols, and vice versa), IP protocols (which map
-     names to IP protocol numbers and vice versa), RPCs (which map names
-     to ONC Remote Procedure Call [RFC1057] numbers and vice versa), NIS
-     netgroups, booting information (boot parameters and MAC address
-     mappings), filesystem mounts, IP hosts and networks.
-
-     Resolution requests are made through a set of C functions, provided
-     in the UNIX system's C library. For example, the UNIX system util-
-     ity "ls", which enumerates the contents of a filesystem directory,
-     uses the C library function getpwuid() in order to map user IDs to
-     login names. Once the request is made, it is resolved using a
-     "nameservice" which is supported by the client library. The name-
-     service may be, at its simplest, a collection of files in the local
-     filesystem which are opened and searched by the C library. Other
-     common nameservices include the Network Information Service (NIS)
-
-
-
-Howard                                                         [Page 2]
+   This document describes a mechanism for mapping entities related to
+   TCP/IP and the UNIX system [UNIX] into [X.500] entries so that they
+   may be resolved with the Lightweight Directory Access Protocol
+   [RFC4511].  A set of attribute types and object classes are proposed,
+   along with specific guidelines for interpreting them.  The intention
+   is to assist the deployment of LDAP as an organizational nameservice.
+   No proposed solutions are intended as standards for the Internet.
+   Rather, it is hoped that a general consensus will emerge as to the
+   appropriate solution to such problems, leading eventually to the
+   adoption of standards.  The proposed mechanism has already been
+   implemented with some success.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010               [Page 2]
+\f
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+1.  Background and Motivation
+
+   The UNIX (R) operating system, and its derivatives (specifically,
+   those which support TCP/IP and conform to the X/Open Single UNIX
+   specification [UNIX]) require a means of looking up entities, by
+   matching them against search criteria or by enumeration.  (Other
+   operating systems that support TCP/IP may provide some means of
+   resolving some of these entities.  This schema is applicable to those
+   environments also.)
+
+   These entities include users, groups, IP services (which map names to
+   IP ports and protocols, and vice versa), IP protocols (which map
+   names to IP protocol numbers and vice versa), RPCs (which map names
+   to ONC Remote Procedure Call [RFC1057] numbers and vice versa), NIS
+   netgroups, booting information (boot parameters and MAC address
+   mappings), filesystem mounts, IP hosts and networks.
+
+   Resolution requests are made through a set of C functions, provided
+   in the UNIX system's C library.  For example, the UNIX system utility
+   "ls", which enumerates the contents of a filesystem directory, uses
+   the C library function getpwuid() in order to map user IDs to login
+   names.  Once the request is made, it is resolved using a
+   "nameservice" which is supported by the client library.  The
+   nameservice may be, at its simplest, a collection of files in the
+   local filesystem which are opened and searched by the C library.
+   Other common nameservices include the Network Information Service
+   (NIS) and the Domain Name System (DNS) [RFC1034].  (The latter is
+   typically used for resolving hosts, services and networks.)  Both
+   these nameservices have the advantage of being distributed and thus
+   permitting a common set of entities to be shared amongst many
+   clients.
+
+   LDAP is a distributed, hierarchical directory service access protocol
+   which is used to access repositories of users and other network-
+   related entities.  Because LDAP is often not tightly integrated with
+   the host operating system, information such as users may need to be
+   kept both in LDAP and in an operating system supported nameservice
+   such as NIS.  By using LDAP as the primary means of resolving these
+   entities, these redundancy issues are minimized and the scalability
+   of LDAP can be exploited.  (By comparison, NIS services based on flat
+   files do not have the scalability or extensibility of LDAP or X.500.)
+
+   The object classes and attributes defined below are suitable for
+   representing the aforementioned entities in a form compatible with
+   LDAP and X.500 directory services.
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010               [Page 3]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
 
 
-     and the Domain Name System (DNS). (The latter is typically used for
-     resolving hosts, services and networks.) Both these nameservices
-     have the advantage of being distributed and thus permitting a com-
-     mon set of entities to be shared amongst many clients.
+2.  General Issues
 
-     LDAP is a distributed, hierarchical directory service access proto-
-     col which is used to access repositories of users and other net-
-     work-related entities. Because LDAP is often not tightly integrated
-     with the host operating system, information such as users may need
-     to be kept both in LDAP and in an operating system supported name-
-     service such as NIS. By using LDAP as the the primary means of
-     resolving these entities, these redundancy issues are minimized and
-     the scalability of LDAP can be exploited. (By comparison, NIS ser-
-     vices based on flat files do not have the scalability or extensi-
-     bility of LDAP or X.500.)
+2.1.  Terminology
 
-     The object classes and attributes defined below are suitable for
-     representing the aforementioned entities in a form compatible with
-     LDAP and X.500 directory services.
+   The key words "MUST", "SHOULD", and "MAY" used in this document are
+   to be interpreted as described in [RFC2119].
 
+   For the purposes of this document, the term "nameservice" refers to a
+   service, such as NIS or flat files, that is used by the operating
+   system to resolve entities within a single, local naming context.
+   Contrast this with a "directory service" such as LDAP, which supports
+   extensible schema and multiple naming contexts.
 
-2.   General Issues
+   The term "NIS-related entities" broadly refers to entities which are
+   typically resolved using the Network Information Service.  (NIS was
+   previously known as YP.)  Deploying LDAP for resolving these entities
+   does not imply that NIS be used, as a gateway or otherwise.  In
+   particular, the host and network classes are generically applicable,
+   and may be implemented on any system that wishes to use LDAP or X.500
+   for host and network resolution.
 
-2.1  Terminology
+   The "DUA" (directory user agent) refers to the LDAP client querying
+   these entities, such as an LDAP to NIS gateway or the C library.  The
+   "client" refers to the application which ultimately makes use of the
+   information returned by the resolution.  It is irrelevant whether the
+   DUA and the client reside within the same address space.  The act of
+   the DUA making this information to the client is termed
+   "republishing".
 
-     The key words "MUST", "SHOULD", and "MAY" used in this document are
-     to be interpreted as described in [RFC2119].
+   To avoid confusion, the term "login name" refers to the user's login
+   name (being the value of the uid attribute) and the term "user ID"
+   refers to the user's integer identification number (being the value
+   of the uidNumber attribute).
 
-     For the purposes of this document, the term "nameservice" refers to
-     a service, such as NIS or flat files, that is used by the operating
-     system to resolve entities within a single, local naming context.
-     Contrast this with a "directory service" such as LDAP, which sup-
-     ports extensible schema and multiple naming contexts.
+   The phrases "resolving an entity" and "resolution of entities" refer
+   respectively to enumerating NIS-related entities of a given type, and
+   matching them against a given search criterion.  One or more entities
+   are returned as a result of successful "resolutions" (a "match"
+   operation will only return one entity).
 
-     The term "NIS-related entities" broadly refers to entities which
-     are typically resolved using the Network Information Service. (NIS
-     was previously known as YP.) Deploying LDAP for resolving these
-     entities does not imply that NIS be used, as a gateway or other-
-     wise. In particular, the host and network classes are generically
-     applicable, and may be implemented on any system that wishes to use
-     LDAP or X.500 for host and network resolution.
+   The use of the term UNIX does not confer upon this schema the
+   endorsement of owners of the UNIX trademark.  Where necessary, the
+   term "TCP/IP entity" is used to refer to protocols, services, hosts,
+   and networks, and the term "UNIX entity" to its complement.  (The
+   former category does not mandate the host operating system supporting
+   the interfaces required for resolving UNIX entities.)
 
-     The "DUA" (directory user agent) refers to the LDAP client querying
-     these entities, such as an LDAP to NIS gateway or the C library.
-     The "client" refers to the application which ultimately makes use
-     of the information returned by the resolution. It is irrelevant
-     whether the DUA and the client reside within the same address
-     space. The act of the DUA making this information to the client is
+   The OIDs defined below are derived from iso(1) org(3) dod(6)
 
 
 
-Howard                                                         [Page 3]
+Howard & Chu            Expires February 10, 2010               [Page 4]
+\f
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+   internet(1) directory(1) nisSchema(1)
+
+2.2.  Schema
+
+   The attributes and classes defined in this document are summarized
+   below.
+
+2.2.1.  Attributes
+
+   The following attributes are defined in this document:
+
+      uidNumber
+      gidNumber
+      gecos
+      homeDirectory
+      loginShell
+      shadowLastChange
+      shadowMin
+      shadowMax
+      shadowWarning
+      shadowInactive
+      shadowExpire
+      shadowFlag
+      memberUid
+      memberNisNetgroup
+      nisNetgroupTriple
+      ipServicePort
+      ipServiceProtocol
+      ipProtocolNumber
+      oncRpcNumber
+      ipHostNumber
+      ipNetworkNumber
+      ipNetmaskNumber
+      macAddress
+      bootParameter
+      bootFile
+      nisMapName
+      nisMapEntry
+      nisPublicKey
+      nisSecretKey
+      nisDomain
+      automountMapName
+      automountKey
+      automountInformation
+
+   Additionally, some of the attributes defined in [RFC4519] and
+   [RFC3112] are required.
+
+
+
+
+Howard & Chu            Expires February 10, 2010               [Page 5]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
 
 
-     termed "republishing".
+2.2.2.  Attribute Option
 
-     To avoid confusion, the term "login name" refers to the user's
-     login name (being the value of the uid attribute) and the term
-     "user ID" refers to he user's integer identification number (being
-     the value of the uidNumber attribute).
+   Centralizing a name service in LDAP allows heterogeneous systems to
+   obtain their information from a single place.  However in some cases,
+   this information cannot be used uniformly on all of the client
+   systems.  These attribute options are defined to allow system-
+   specific values to be used where necessary.  The options are defined
+   as the following:
 
-     The phrases "resolving an entity" and "resolution of entities"
-     refer respectively to enumerating NIS-related entities of a given
-     type, and matching them against a given search criterion. One or
-     more entities are returned as a result of successful "resolutions"
-     (a "match" operation will only return one entity).
+      host-<hostname>
+      hostos-<ostype>
 
-     The use of the term UNIX does not confer upon this schema the
-     endorsement of owners of the UNIX trademark. Where necessary, the
-     term "TCP/IP entity" is used to refer to protocols, services,
-     hosts, and networks, and the term "UNIX entity" to its complement.
-     (The former category does not mandate the host operating system
-     supporting the interfaces required for resolving UNIX entities.)
+   where hostname is a string representing the name of a specific
+   machine, and ostype is a string representing a particular operating
+   system.
 
-     The OIDs defined below are derived from iso(1) org(3) dod(6) inter-
-     net(1) directory(1) nisSchema(1).
+   For example, a user named "Babs Jensen" may have a different home
+   directory on different machines.  This could be represented as:
 
-2.2  Attributes
+      homeDirectory: /home/babsj
+      homeDirectory;hostos-sunos: /export/home/bjensen
+      homeDirectory;host-babshost: /home/root
 
-     The attributes and classes defined in this document are summarized
-     below.
+   These attribute options follow sub-typing semantics.  If a DUA
+   requests an attribute to be returned in a search operation, and does
+   not specify an option, all subtypes of that attribute are returned.
 
-     The following attributes are defined in this document:
+2.2.3.  Object Classes
 
-          uidNumber
-          gidNumber
-          gecos
-          homeDirectory
-          loginShell
-          shadowLastChange
-          shadowMin
-          shadowMax
-          shadowWarning
-          shadowInactive
-          shadowExpire
-          shadowFlag
-          memberUid
-          memberNisNetgroup
-          nisNetgroupTriple
-          ipServicePort
-          ipServiceProtocol
-          ipProtocolNumber
+   The following object classes are defined in this document:
 
+      posixAccount
+      shadowAccount
+      posixGroup
+      ipService
+      ipProtocol
+      oncRpc
+      ipHost
+      ipNetwork
+      nisNetgroup
+      nisMap
+      nisObject
+      ieee802Device
+      bootableDevice
+      nisKeyObject
+      nisDomainObject
+      automountMap
+      automount
 
 
-Howard                                                         [Page 4]
+
+Howard & Chu            Expires February 10, 2010               [Page 6]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+   Additionally, some of the attributes defined in [RFC4519] are
+   required.
+
+
+
+
+
+
+
+
+
+
+
+
 
 
-          oncRpcNumber
-          ipHostNumber
-          ipNetworkNumber
-          ipNetmaskNumber
-          macAddress
-          bootParameter
-          bootFile
-          nisMapName
-          nisMapEntry
-          nisPublicKey
-          nisSecretKey
-          nisDomain
-          automountMapName
-          automountKey
-          automountInformation
 
-     Additionally, some of the attributes defined in [RFC2256] and
-     [RFC3112] are required.
 
-2.3  Object classes
 
-     The following object classes are defined in this document:
 
-          posixAccount
-          shadowAccount
-          posixGroup
-          ipService
-          ipProtocol
-          oncRpc
-          ipHost
-          ipNetwork
-          nisNetgroup
-          nisMap
-          nisObject
-          ieee802Device
-          bootableDevice
-          nisKeyObject
-          nisDomainObject
-          automountMap
-          automount
 
-     Additionally, some of the classes defined in [RFC2256] are
-     required.
 
 
-3.   Attribute definitions
 
-     This section contains attribute definitions to be implemented by
 
 
 
-Howard                                                         [Page 5]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010               [Page 7]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
 
+3.  Attribute Definitions
 
-     DUAs supporting this schema.
+   This section contains attribute definitions to be implemented by DUAs
+   supporting this schema:
 
-          ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
-            DESC 'An integer uniquely identifying a user in an
-                  administrative domain'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
+         DESC 'An integer uniquely identifying a user in an
+               administrative domain'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.1 NAME 'gidNumber'
-            DESC 'An integer uniquely identifying a group in an
-                  administrative domain'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.2 NAME 'gecos'
-            DESC 'The GECOS field; the common name'
-            EQUALITY caseIgnoreMatch
-            SUBSTRINGS caseIgnoreSubstringsMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.1 NAME 'gidNumber'
+         DESC 'An integer uniquely identifying a group in an
+               administrative domain'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory'
-            DESC 'The absolute path to the home directory'
-            EQUALITY caseExactIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.4 NAME 'loginShell'
-            DESC 'The path to the login shell'
-            EQUALITY caseExactIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.2 NAME 'gecos'
+         DESC 'The GECOS field; the common name'
+         EQUALITY caseIgnoreMatch
+         SUBSTRINGS caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.6 NAME 'shadowMin'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory'
+         DESC 'The absolute path to the home directory'
+         EQUALITY caseExactIA5Match
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.7 NAME 'shadowMax'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
 
+     ( 1.3.6.1.1.1.1.4 NAME 'loginShell'
+         DESC 'The path to the login shell'
+         EQUALITY caseExactIA5Match
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+         SINGLE-VALUE )
 
 
-Howard                                                         [Page 6]
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010               [Page 8]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
 
+     ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.6 NAME 'shadowMin'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.7 NAME 'shadowMax'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.12 NAME 'memberUid'
-            EQUALITY caseExactMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+     ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup'
-            EQUALITY caseExactMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
-          ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
-            DESC 'Netgroup triple'
-            EQUALITY caseIgnoreMatch
-            SUBSTRINGS caseIgnoreSubstringsMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+     ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort'
-            DESC 'Service port number'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol'
-            DESC 'Service protocol name'
-            EQUALITY caseIgnoreMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+     ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber'
 
+     ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
 
-Howard                                                         [Page 7]
+
+
+Howard & Chu            Expires February 10, 2010               [Page 9]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+     ( 1.3.6.1.1.1.1.12 NAME 'memberUid'
+         EQUALITY caseExactMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+
+     ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup'
+         EQUALITY caseExactMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
 
-            DESC 'IP protocol number'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
+         DESC 'Netgroup triple'
+         EQUALITY caseIgnoreMatch
+         SUBSTRINGS caseIgnoreSubstringsMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
-          ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber'
-            DESC 'ONC RPC number'
-            EQUALITY integerMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber'
-            DESC 'IPv4 addresses as a dotted decimal omitting leading
-                  zeros or IPv6 addresses as defined in RFC2373'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+     ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort'
+         DESC 'Service port number'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber'
-            DESC 'IP network omitting leading zeros, eg. 192.168'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber'
-            DESC 'IP netmask omitting leading zeros, eg. 255.255.255.0'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol'
+         DESC 'Service protocol name'
+         EQUALITY caseIgnoreMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
 
-          ( 1.3.6.1.1.1.1.22 NAME 'macAddress'
-            DESC 'MAC address in maximal, colon separated hex
-                  notation, eg. 00:00:92:90:ee:e2'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
 
-          ( 1.3.6.1.1.1.1.23 NAME 'bootParameter'
-            DESC 'rpc.bootparamd parameter'
-            EQUALITY caseExactIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+     ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber'
+         DESC 'IP protocol number'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.24 NAME 'bootFile'
-            DESC 'Boot image name'
-            EQUALITY caseExactIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
 
-          ( 1.3.6.1.1.1.1.26 NAME 'nisMapName'
-            DESC 'Name of a generic NIS map'
-            EQUALITY caseIgnoreMatch
+     ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber'
+         DESC 'ONC RPC number'
+         EQUALITY integerMatch
+         ORDERING integerOrderingMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+         SINGLE-VALUE )
 
 
 
-Howard                                                         [Page 8]
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 10]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+     ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber'
+         DESC 'IPv4 addresses as a dotted decimal omitting leading
+               zeros or IPv6 addresses as defined in RFC2373'
+         EQUALITY caseIgnoreIA5Match
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
 
+     ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber'
+         DESC 'IP network omitting leading zeros, eg. 192.168'
+         EQUALITY caseIgnoreIA5Match
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+         SINGLE-VALUE )
 
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
 
-          ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry'
-            DESC 'A generic NIS entry'
-            EQUALITY caseExactMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024}
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber'
+         DESC 'IP netmask omitting leading zeros, eg. 255.255.255.0'
+         EQUALITY caseIgnoreIA5Match
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+         SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.28 NAME 'nisPublicKey'
-            DESC 'NIS public key'
-            EQUALITY octetStringMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.29 NAME 'nisSecretKey'
-            DESC 'NIS secret key'
-            EQUALITY octetStringMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.22 NAME 'macAddress'
+         DESC 'MAC address in maximal, colon separated hex
+               notation, eg. 00:00:92:90:ee:e2'
+         EQUALITY caseIgnoreIA5Match
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
 
-          ( 1.3.6.1.1.1.1.30 NAME 'nisDomain'
-            DESC 'NIS domain'
-            EQUALITY caseIgnoreIA5Match
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
 
-          ( 1.3.6.1.1.1.1.31 NAME 'automountMapName'
-            DESC 'automount Map Name'
-            EQUALITY caseExactMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.23 NAME 'bootParameter'
+         DESC 'rpc.bootparamd parameter'
+         EQUALITY caseExactIA5Match
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
 
-          ( 1.3.6.1.1.1.1.32 NAME 'automountKey'
-            DESC 'Automount Key value'
-            EQUALITY caseExactMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-            SINGLE-VALUE )
 
-          ( 1.3.6.1.1.1.1.33 NAME 'automountInformation'
-            DESC 'Automount information'
-            EQUALITY caseExactMatch
-            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-            SINGLE-VALUE )
+     ( 1.3.6.1.1.1.1.24 NAME 'bootFile'
+         DESC 'Boot image name'
+         EQUALITY caseExactIA5Match
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
 
 
-4.   Class definitions
+     ( 1.3.6.1.1.1.1.26 NAME 'nisMapName'
+         DESC 'Name of a generic NIS map'
+         EQUALITY caseIgnoreMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
 
-     This section contains class definitions to be implemented by DUAs
-     supporting the schema.
 
 
 
-Howard                                                         [Page 9]
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 11]
 \f
-Internet Draft              NIS X.500 schema               February 2005
-
-
-     Various schema for mail routing and delivery using LDAP directories
-     have been proposed, and as such this document does not consider
-     schema for representing mail aliases or distribution lists.
-
-
-          ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY
-            DESC 'Abstraction of an account with POSIX attributes'
-            MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
-            MAY ( authPassword $ userPassword $ loginShell $ gecos $
-                  description ) )
-
-          ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' SUP top AUXILIARY
-            DESC 'Additional attributes for shadow passwords'
-            MUST uid
-            MAY ( authPassword $ userPassword $ description $
-                  shadowLastChange $ shadowMin $ shadowMax $
-                  shadowWarning $ shadowInactive $
-                  shadowExpire $ shadowFlag ) )
-
-          ( 1.3.6.1.1.1.2.2 NAME 'posixGroup' SUP top AUXILIARY
-            DESC 'Abstraction of a group of accounts'
-            MUST gidNumber
-            MAY ( authPassword $ userPassword $ memberUid $
-                  description ) )
-
-          ( 1.3.6.1.1.1.2.3 NAME 'ipService' SUP top STRUCTURAL
-            DESC 'Abstraction an Internet Protocol service.
-                  Maps an IP port and protocol (such as tcp or udp)
-                  to one or more names; the distinguished value of
-                  the cn attribute denotes the service's canonical
-                  name'
-            MUST ( cn $ ipServicePort $ ipServiceProtocol )
-            MAY description )
-
-          ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' SUP top STRUCTURAL
-            DESC 'Abstraction of an IP protocol. Maps a protocol number
-                  to one or more names. The distinguished value of the cn
-                  attribute denotes the protocol canonical name'
-            MUST ( cn $ ipProtocolNumber )
-            MAY description )
-
-          ( 1.3.6.1.1.1.2.5 NAME 'oncRpc' SUP top STRUCTURAL
-            DESC 'Abstraction of an Open Network Computing (ONC)
-                 [RFC1057] Remote Procedure Call (RPC) binding.
-                 This class maps an ONC RPC number to a name.
-                 The distinguished value of the cn attribute denotes
-                 the RPC service canonical name'
-            MUST ( cn $ oncRpcNumber )
-
-
-
-Howard                                                        [Page 10]
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+     ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry'
+         DESC 'A generic NIS entry'
+         EQUALITY caseExactMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024}
+         SINGLE-VALUE )
+
+
+     ( 1.3.6.1.1.1.1.28 NAME 'nisPublicKey'
+         DESC 'NIS public key'
+         EQUALITY octetStringMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
+         SINGLE-VALUE )
+
+
+     ( 1.3.6.1.1.1.1.29 NAME 'nisSecretKey'
+         DESC 'NIS secret key'
+         EQUALITY octetStringMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
+         SINGLE-VALUE )
+
+
+     ( 1.3.6.1.1.1.1.30 NAME 'nisDomain'
+         DESC 'NIS domain'
+         EQUALITY caseIgnoreIA5Match
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+
+     ( 1.3.6.1.1.1.1.31 NAME 'automountMapName'
+         DESC 'automount Map Name'
+         EQUALITY caseExactMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+         SINGLE-VALUE )
+
+
+     ( 1.3.6.1.1.1.1.32 NAME 'automountKey'
+         DESC 'Automount Key value'
+         EQUALITY caseExactMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+         SINGLE-VALUE )
+
+
+     ( 1.3.6.1.1.1.1.33 NAME 'automountInformation'
+         DESC 'Automount information'
+         EQUALITY caseExactMatch
+         SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+         SINGLE-VALUE )
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 12]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
 
 
-            MAY description )
+4.  Class Definitions
 
-          ( 1.3.6.1.1.1.2.6 NAME 'ipHost' SUP top AUXILIARY
-            DESC 'Abstraction of a host, an IP device. The distinguished
-                  value of the cn attribute denotes the host's canonical
-               name. Device SHOULD be used as a structural class'
-            MUST ( cn $ ipHostNumber )
-            MAY ( authPassword $ userPassword $ l $ description $ manager ) )
+   This section contains class definitions to be implemented by DUAs
+   supporting the schema.
 
-          ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' SUP top STRUCTURAL
-            DESC 'Abstraction of a network. The distinguished value of
-                  the cn attribute denotes the network canonical name'
-            MUST ipNetworkNumber
-            MAY ( cn $ ipNetmaskNumber $ l $ description $ manager ) )
+   Various schema for mail routing and delivery using LDAP directories
+   have been proposed, and as such this document does not consider
+   schema for representing mail aliases or distribution lists.
 
-          ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' SUP top STRUCTURAL
-            DESC 'Abstraction of a netgroup. May refer to other netgroups'
-            MUST cn
-            MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )
+     ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY
+         DESC 'Abstraction of an account with POSIX attributes'
+         MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
+         MAY ( authPassword $ userPassword $ loginShell $ gecos $
+               description ) )
 
-          ( 1.3.6.1.1.1.2.9 NAME 'nisMap' SUP top STRUCTURAL
-            DESC 'A generic abstraction of a NIS map'
-            MUST nisMapName
-            MAY description )
 
-          ( 1.3.6.1.1.1.2.10 NAME 'nisObject' SUP top STRUCTURAL
-            DESC 'An entry in a NIS map'
-            MUST ( cn $ nisMapEntry $ nisMapName )
-            MAY description )
+     ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' SUP top AUXILIARY
+         DESC 'Additional attributes for shadow passwords'
+         MUST uid
+         MAY ( authPassword $ userPassword $ description $
+               shadowLastChange $ shadowMin $ shadowMax $
+               shadowWarning $ shadowInactive $
+               shadowExpire $ shadowFlag ) )
 
-          ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' SUP top AUXILIARY
-            DESC 'A device with a MAC address; device SHOULD be
-                  used as a structural class'
-            MAY macAddress )
 
-          ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' SUP top AUXILIARY
-            DESC 'A device with boot parameters; device SHOULD be
-                  used as a structural class'
-            MAY ( bootFile $ bootParameter ) )
+     ( 1.3.6.1.1.1.2.2 NAME 'posixGroup' SUP top AUXILIARY
+         DESC 'Abstraction of a group of accounts'
+         MUST gidNumber
+         MAY ( authPassword $ userPassword $ memberUid $
+               description ) )
 
-          ( 1.3.6.1.1.1.2.14 NAME 'nisKeyObject' SUP top AUXILIARY
-            DESC 'An object with a public and secret key'
-            MUST ( cn $ nisPublicKey $ nisSecretKey )
-            MAY ( uidNumber $ description ) )
 
-          ( 1.3.6.1.1.1.2.15 NAME 'nisDomainObject' SUP top AUXILIARY
-            DESC 'Associates a NIS domain with a naming context'
-            MUST nisDomain )
+     ( 1.3.6.1.1.1.2.3 NAME 'ipService' SUP top STRUCTURAL
+         DESC 'Abstraction an Internet Protocol service.
+               Maps an IP port and protocol (such as tcp or udp)
+               to one or more names; the distinguished value of
+               the cn attribute denotes the service's canonical
+               name'
+         MUST ( cn $ ipServicePort $ ipServiceProtocol )
+         MAY description )
 
 
+     ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' SUP top STRUCTURAL
+         DESC 'Abstraction of an IP protocol. Maps a protocol number
+               to one or more names. The distinguished value of the cn
+               attribute denotes the protocol canonical name'
+         MUST ( cn $ ipProtocolNumber )
+         MAY description )
 
-Howard                                                        [Page 11]
+
+
+Howard & Chu            Expires February 10, 2010              [Page 13]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
 
+     ( 1.3.6.1.1.1.2.5 NAME 'oncRpc' SUP top STRUCTURAL
+         DESC 'Abstraction of an Open Network Computing (ONC)
+              [RFC1057] Remote Procedure Call (RPC) binding.
+              This class maps an ONC RPC number to a name.
+              The distinguished value of the cn attribute denotes
+              the RPC service canonical name'
+         MUST ( cn $ oncRpcNumber )
+         MAY description )
 
-          ( 1.3.6.1.1.1.2.16 NAME 'automountMap' SUP top STRUCTURAL
-            MUST ( automountMapName )
-            MAY description )
 
-          ( 1.3.6.1.1.1.2.17 NAME 'automount' SUP top STRUCTURAL
-            DESC 'Automount information'
-            MUST ( automountKey $ automountInformation )
-            MAY description )
+     ( 1.3.6.1.1.1.2.6 NAME 'ipHost' SUP top AUXILIARY
+         DESC 'Abstraction of a host, an IP device. The distinguished
+               value of the cn attribute denotes the host's canonical
+            name. Device SHOULD be used as a structural class'
+         MUST ( cn $ ipHostNumber )
+         MAY ( authPassword $ userPassword $ l $ description $
+               manager ) )
 
 
-5.   Implementation details
+     ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' SUP top STRUCTURAL
+         DESC 'Abstraction of a network. The distinguished value of
+               the cn attribute denotes the network canonical name'
+         MUST ipNetworkNumber
+         MAY ( cn $ ipNetmaskNumber $ l $ description $ manager ) )
 
-5.1  Suggested resolution methods
 
-     The preferred means of directing a client application (one using
-     the shared services of the C library) to use LDAP as its informa-
-     tion source for the functions listed in Appendix B is to modify the
-     source code to directly query LDAP. As the source to commercial C
-     libraries and applications is rarely available to the end-user, one
-     could emulate a supported nameservice (such as NIS). (This is also
-     an appropriate opportunity to perform caching of entries across
-     process address spaces.) In the case of NIS, reference implementa-
-     tions are widely available and the RPC interface is well known.
+     ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' SUP top STRUCTURAL
+         DESC 'Abstraction of a netgroup. May refer to other
+               netgroups'
+         MUST cn
+         MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )
 
-     The means by which the operating system is directed to use LDAP is
-     implementation dependent. For example, some operating systems and C
-     libraries support end-user extensible resolvers using dynamically
-     loadable libraries and a nameservice "switch". The means in which
-     the DUA locates LDAP servers is also implementation dependent.
 
-5.2  Interpreting user and group entries
+     ( 1.3.6.1.1.1.2.9 NAME 'nisMap' SUP top STRUCTURAL
+         DESC 'A generic abstraction of a NIS map'
+         MUST nisMapName
+         MAY description )
 
-     User and group resolution is initiated by the functions prefixed by
-     getpw and getgr respectively. The uid attribute contains the user's
-     login name. The cn attribute, in posixGroup entries, contains the
-     group's name.  This document preserves the use of the uid attribute
-     even though, being a naming attribute, its syntax is case insensi-
-     tive. This may cause a problem with existing deployments where
-     there exist login names differing only in case. If DUAs support
-     attribute mapping, a different attribute may be used to represent
-     users' login names.
 
-     The account object class provides a convenient structural class for
-     posixAccount, and SHOULD be used where additional attributes are
-     not required. For groups with one of more distinguished names, the
-     groupOfUniqueNames object class MUST be used as a structural object
-     class. For groups whose members are only login names, the namedOb-
-     ject [namedObject] object class MAY be used as a structural object
+     ( 1.3.6.1.1.1.2.10 NAME 'nisObject' SUP top STRUCTURAL
+         DESC 'An entry in a NIS map'
+         MUST ( cn $ nisMapEntry $ nisMapName )
 
 
+     ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' SUP top AUXILIARY
+         DESC 'A device with a MAC address; device SHOULD be
+               used as a structural class'
+         MAY macAddress )
 
-Howard                                                        [Page 12]
+
+
+Howard & Chu            Expires February 10, 2010              [Page 14]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+     ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' SUP top AUXILIARY
+         DESC 'A device with boot parameters; device SHOULD be
+               used as a structural class'
+         MAY ( bootFile $ bootParameter ) )
+
+
+     ( 1.3.6.1.1.1.2.14 NAME 'nisKeyObject' SUP top AUXILIARY
+         DESC 'An object with a public and secret key'
+         MUST ( cn $ nisPublicKey $ nisSecretKey )
+         MAY ( uidNumber $ description ) )
 
 
-     class.
+     ( 1.3.6.1.1.1.2.15 NAME 'nisDomainObject' SUP top AUXILIARY
+         DESC 'Associates a NIS domain with a naming context'
+         MUST nisDomain )
 
-     It is suggested that uid and cn are used as the naming attribute
-     for posixAccount and posixGroup entries, respectively. Group mem-
-     bers may either be login names (values of memberUid) or distin-
-     guished names (values of uniqueMember). In the latter case, the
-     distinguished name must be mapped to one or more login names by
-     examining the name's RDN or, if it is not distinguished by uid,
-     performing a base search on the DN with a filter of "(object-
-     class=*)". DUAs may wish to cache DN to login name mappings. The
-     DUA MAY traverse nested groups.
 
-     An account's GECOS field is preferably determined by a value of the
-     gecos attribute. If no gecos attribute exists, the value of the cn
-     attribute MUST be used. (The existence of the gecos attribute
-     allows information embedded in the GECOS field, such as a user's
-     telephone number, to be returned to the client without overloading
-     the cn attribute. It also accommodates directories where the common
-     name does not contain the user's full name.)
+     ( 1.3.6.1.1.1.2.16 NAME 'automountMap' SUP top STRUCTURAL
+         MUST ( automountMapName )
+         MAY description )
 
-     An entry of class posixAccount, posixGroup, or shadowAccount with-
-     out an authPassword or userPassword attribute MUST NOT be used for
-     authentication.  In this case the client SHOULD be returned a non-
-     matchable password such as "x".
 
-     If userPassword is used, its values MUST be represented by follow-
-     ing syntax:
+     ( 1.3.6.1.1.1.2.17 NAME 'automount' SUP top STRUCTURAL
+         DESC 'Automount information'
+         MUST ( automountKey $ automountInformation )
+         MAY description )
 
-          passwordvalue   = schemeprefix encryptedpasswd
-          schemeprefix    = "{" scheme "}"
-          scheme          = "crypt" / "md5" / "sha" / "ssha" / altscheme
-          altscheme       = "x-" keystring
-          encryptedpasswd = encrypted password
 
+     ( 1.3.6.1.1.1.2.18 NAME 'groupOfMembers' SUP top STRUCTURAL
+         DESC 'A group with members (DNs)'
+         MUST cn
+         MAY ( businessCategory $ seeAlso $ owner $ ou $ o $
+               description $ member ) )
 
-     The encrypted password contains of a plaintext key hashed using the
-     algorithm scheme.  If the schema is "sha", the encrypted password
-     is the base64 encoding of the SHA-1 digest of the plaintext pass-
-     word.
 
-     userPassword values which do not adhere to this syntax MUST NOT be
-     used for authentication. The DUA MUST iterate through the values of
-     the attribute until a value matching the above syntax is found.
-     Only if encryptedpassword is an empty string does the user have no
-     password.  DUAs are not required to consider encryption schemes
-     which the client will not recognize; in most cases, it may be suf-
-     ficient to consider only "crypt".
 
 
 
 
-Howard                                                        [Page 13]
+
+
+
+
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 15]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
 
 
-     DUA MAY use the authPassword attribute instead of userPassword,
-     defined in [RFC3112].  The DUA MUST iterate the values of the auth-
-     Password attribute until a value whose scheme is CRYPT is found.
-     The DUA MAY iterate through the values of the userPassword
-     attribute, using the syntax defined in RFC 2307, until a value
-     whose scheme is CRYPT is found. If no conforming value is found,
-     the client MUST be returned a non-matchable password such as "x".
-     Authentication using schemes other than CRYPT is, although advis-
-     able, beyond the scope of this document.
+5.  Implementation Details
 
-     Below is an example of an authPassword attribute:
+5.1.  Suggested Resolution Methods
 
-          authPassword: CRYPT$X5/DBrWPOQQaI
+   The preferred means of directing a client application (one using the
+   shared services of the C library) to use LDAP as its information
+   source for the functions listed in Appendix B is to modify the source
+   code to directly query LDAP.  As the source to commercial C libraries
+   and applications is rarely available to the end-user, one could
+   emulate a supported nameservice (such as NIS).  (This is also an
+   appropriate opportunity to perform caching of entries across process
+   address spaces.)  In the case of NIS, reference implementations are
+   widely available and the RPC interface is well known.
 
+   The means by which the operating system is directed to use LDAP is
+   implementation dependent.  For example, some operating systems and C
+   libraries support end-user extensible resolvers using dynamically
+   loadable libraries and a nameservice "switch" (NSS).  The means in
+   which the DUA locates LDAP servers is also implementation dependent.
 
-     Below is an example of a (deprecated) userPassword attribute:
+5.2.  Interpreting User and Group Entries
 
-          userPassword: {CRYPT}X5/DBrWPOQQaI
+   User and group resolution is initiated by the functions prefixed by
+   getpw and getgr respectively.  The uid attribute contains the user's
+   login name.  The cn attribute, in posixGroup entries, contains the
+   group's name.  This document preserves the use of the uid attribute
+   even though, being a naming attribute, its syntax is case
+   insensitive.  This may cause a problem with existing deployments
+   where there exist login names differing only in case.  If DUAs
+   support attribute mapping, a different attribute MAY be used to
+   represent users' login names.
 
+   The account object class provides a convenient structural class for
+   posixAccount, and SHOULD be used where additional attributes are not
+   required.  Likewise, the groupOfMembers object class SHOULD be used
+   for groups.  (The groupOfUniqueNames object class is deprecated and
+   SHOULD NOT be used.)
 
-     A DUA MAY utilize the attributes in the shadowAccount class to pro-
-     vide shadow password service (getspnam() and getspent()). In such
-     cases, the DUA MUST NOT make use of the userPassword attribute for
-     getpwnam() et al, and MUST return a non-matchable password (such as
-     "x") to the client instead.
+   It is suggested that uid and cn are used as the naming attribute for
+   posixAccount and posixGroup entries, respectively.  Group members may
+   either be login names (values of memberUid) or distinguished names
+   (values of member).  In the latter case, the distinguished name must
+   be mapped to one or more login names by examining the name's RDN or,
+   if it is not distinguished by uid, performing a base search on the DN
+   with a filter of "(objectclass=*)".  DUAs MAY wish to cache DN to
+   login name mappings.  The DUA MAY traverse nested groups.
 
-5.4  Interpreting hosts and networks
+   An account's GECOS field is preferably determined by a value of the
 
-     The ipHostNumber and ipNetworkNumber attributes are defined in
-     preference to dNSRecord (defined in [RFC1279]), in order to sim-
-     plify the DUA's role in interpreting entries in the directory. A
-     dNSRecord expresses a complete resource record, including time to
-     live and class data, which is extraneous to this schema.
 
-     Additionally, the ipHost and ipNetwork classes permit a host or
-     network (respectively) and all its aliases to be represented by a
-     single entry in the directory. This is not necessarily possible if
-     a DNS resource record is mapped directly to an LDAP entry.  Imple-
-     mentations that wish to use LDAP to master DNS zone information are
-     not precluded from doing so, and may simply avoid the ipHost and
-     ipNetwork classes.
 
-     This document redefines, although not exclusively, the ipNetwork
-     class defined in [RFC1279], in order to achieve consistent naming
-     with ipHost. The ipNetworkNumber attribute is also used in the
-     siteContact object class [ROSE].
+Howard & Chu            Expires February 10, 2010              [Page 16]
+\f
+Internet-Draft           LDAP NameService Schema             August 2009
 
-     The authPassword and userPassword attributes are included in ipHost
 
+   gecos attribute.  If no gecos attribute exists, the value of the cn
+   attribute MUST be used.  (The existence of the gecos attribute allows
+   information embedded in the GECOS field, such as a user's telephone
+   number, to be returned to the client without overloading the cn
+   attribute.  It also accommodates directories where the common name
+   does not contain the user's full name.)
 
+5.2.1.  Using Attribute Options
 
-Howard                                                        [Page 14]
+   Some posixAccount attributes may be accompanied by options
+   (Section 2.2.2) identifying particular hosts or operating system
+   types.  The attribute with a hostos option matching the operating
+   system of the DUA SHOULD be used in preference to an attribute
+   without any associated options.  The attribute with a host option
+   matching the hostname of the DUA SHOULD be used in preference to any
+   other attribute.
+
+5.2.2.  Authentication Considerations
+
+5.2.2.1.  Using Password Values
+
+   When authenticating using a NIS to LDAP gateway or using NSS, a
+   lookup is performed to retrieve the password attribute and the value
+   is used in the DUA to authenticate a user.  This approach to
+   authentication is deprecated, as it requires that read access to the
+   password attribute be granted across a network.
+
+   An entry of class posixAccount, posixGroup, or shadowAccount without
+   an authPassword or userPassword attribute MUST NOT be used for
+   authentication.  In this case the client SHOULD be returned a non-
+   matchable password such as "x".
+
+   If userPassword is used, its values MUST be represented by the
+   following syntax:
+
+       passwordvalue   = schemeprefix hashedpasswd
+       schemeprefix    = "{" scheme "}"
+       scheme          = "crypt" / "md5" / "sha" / "ssha" / altscheme
+       altscheme       = "x-" keystring
+       hashedpasswd    = hashed password
+
+   The hashed password contains a plaintext key hashed using the
+   algorithm scheme.  If the schema is "sha", the hashed password is the
+   base64 encoding of the SHA-1 digest of the plaintext password.
+
+   userPassword values which do not adhere to this syntax MUST NOT be
+   used for authentication.  The DUA MUST iterate through the values of
+   the attribute until a value matching the above syntax is found.  Only
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 17]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
 
+   if hashedpassword is an empty string does the user have no password.
+   DUAs are not required to consider hashing schemes which the client
+   will not recognize; in most cases, it may be sufficient to consider
+   only "crypt".
 
-     such that hosts may be treated as authentication principals. The
-     treatment of these attribute and inherent caveats considered in
-     section 5.2 apply here also.
+   DUA MAY use the authPassword attribute instead of userPassword,
+   defined in [RFC3112].  The DUA MUST iterate the values of the
+   authPassword attribute until a value whose scheme is CRYPT is found.
+   The DUA MAY iterate through the values of the userPassword attribute,
+   using the syntax defined here, until a value whose scheme is CRYPT is
+   found.  If no conforming value is found, the client MUST be returned
+   a non-matchable password such as "x".  Authentication using schemes
+   other than CRYPT is, although advisable, beyond the scope of this
+   document
 
-     The trailing zeros in a network address MUST be omitted. CIDR-style
-     network addresses (eg. 192.168.1/24) MAY be used.
+   Below is an example of an authPassword attribute:
 
-     Leading zeros MUST be removed from all components of an IPv6
-     address string as defined by [RFC2373], section 2.2, item 1.  The
-     IPv6 address string MUST be further normalized by following the
-     "::" syntax as defined in section 2.2, item 2.  In addition, "::"
-     MUST be used to replace the longest string of zero bits.  If there
-     are two or more longest strings of zero bits, then the first string
-     MUST be replaced.  In addition, the syntax defined by [RFC2373],
-     section 2.2, item 3 MUST NOT be used.  IPv4 addresses MUST be rep-
-     resented by the IPv4 dotted decimal string syntax.
+       authPassword: CRYPT$X5/DBrWPOQQaI
 
-     For example the following address:
+   Below is an example of a (deprecated) userPassword attribute:
 
-          1080:0000:0:0:08:800:200C:417A
-          FF01:0:0:0:0:0:01
-          0:0:0:0:0:0:0:0001
-          0:0:0:0:0:0:0:0
+       userPassword: {CRYPT}X5/DBrWPOQQaI
 
-     MUST be normalized as:
+   A DUA MAY utilize the attributes in the shadowAccount class to
+   provide shadow password service (getspnam() and getspent()).  In such
+   cases, the DUA MUST NOT make use of the userPassword attribute for
+   getpwnam() et al, and MUST return a non-matchable password (such as
+   "x") to the client instead.
 
-          1080::8:800:200C:417A
-          FF01::101
-          0::1
-          ::
+5.2.2.2.  Using LDAP Bind
 
-5.5  Interpreting other entities
+   The preferred method for authenticating users with LDAP is to perform
+   an LDAP Bind operation with the user's name and password.  In this
+   case the method the DSA uses to store and verify the password is
+   completely internal to the DSA and not of any concern to the DUA.
 
-     In general, a one-to-one mapping between entities and LDAP entries
-     is proposed, in that each entity has exactly one representation in
-     the DIT. In some cases this is not feasible; for example, a service
-     which is represented in more than one protocol domain. Consider the
-     following entry:
+   Likewise, using the shadowAccount attributes requires the DUA to
+   handle password policy enforcement.  However the policies expressed
+   in the shadowAccount are limited in scope, and not uniformly
+   applicable to all the systems that will be using LDAP.
 
-          dn: cn=domain,ou=services,dc=aja,dc=com
-          objectClass: top
-          objectClass: ipService
-          cn: domain
-          cn: nameserver
-          ipServicePort: 53
-          ipServiceProtocol: tcp
-          ipServiceProtocol: udp
+   The preferred method is to leave password policy enforcement to the
+   DSA, so that it will be uniformly enforced across all of the various
+   systems that rely on the directory.  This enforcement occurs
+   implicitly when authenticating using LDAP Bind if the DSA supports
+   the LDAP password policy [I-D.behera-ldap-password-policy]
+   mechanisms.
 
 
 
 
-Howard                                                        [Page 15]
+Howard & Chu            Expires February 10, 2010              [Page 18]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
 
 
-     This entry MUST map to the following two (2) services entities:
+   The means in which authentication in the DUA is configured is
+   implementation dependent.  Typically it is accomplished using [PAM].
+   Further details of authentication are beyond the scope of this
+   document.
 
-          domain  53/tcp  nameserver
-          domain  53/udp  nameserver
+5.2.3.  Naming Considerations
 
-     While the above two entities may be represented as separate LDAP
-     entities, with different distinguished names (such as
-     cn=domain+ipServiceProtocol=tcp, ... and cn=domain+ipServiceProto-
-     col=udp, ...) it is convenient to represent them as a single entry.
-     (If a service is represented in multiple protocol domains with dif-
-     ferent ports, then multiple entries are required; multivalued RDNs
-     may be used to distinguish them.)
+   On UNIX systems, users and groups reside in separate name spaces and
+   it is common for the same name to be used by both a user and a group.
+   Since they are in separate name spaces there is no ambiguity and no
+   conflict.  However, when integrating a name service into LDAP the
+   directory may be used with other systems besides UNIX and its
+   derivatives.  In particular, the Microsoft Windows operating system
+   may also use LDAP for its own name service.  In Windows, users and
+   groups reside in a single name space and so one cannot use the same
+   name for both a user and a group.
 
-     With the exception of authPassword and userPassword values, empty
-     values (consisting of a zero length string) are returned by the DUA
-     to the client. The DUA MUST reject any entries which do not conform
-     to the schema (missing mandatory attributes). Non-conforming
-     entries SHOULD be ignored while enumerating entries.
+   Conflicts in naming conventions may arise in other deployments as
+   well, and should be carefully taken into account when migrating from
+   other naming services into LDAP.
 
-     The nisDomainObject object class is provided to associate a NIS
-     domain with a naming context. A DUA would retrieve the NIS domain
-     name from a configuration file and enumerate the naming contexts
-     served by an LDAP server, searching each naming context for (nisDo-
-     main=%s).  The first matching entry that is found may be used as a
-     search base for configuration profile information or for entries
-     themselves. For example, the following example shows an association
-     between the NIS domain "nis.aja.com" and the naming context
-     "dc=aja,dc=com":
+5.3.  Interpreting Hosts and Networks
 
-          dn: dc=aja,dc=com
-          objectClass: top
-          objectClass: domain
-          objectClass: nisDomainObject
-          dc: aja
-          nisDomain: nis.aja.com
+   The ipHostNumber and ipNetworkNumber attributes are defined in
+   preference to dNSRecord (defined in [RFC1279]), in order to simplify
+   the DUA's role in interpreting entries in the directory.  A dNSRecord
+   expresses a complete resource record, including time to live and
+   class data, which is extraneous to this schema.
 
+   Additionally, the ipHost and ipNetwork classes permit a host or
+   network (respectively) and all its aliases to be represented by a
+   single entry in the directory.  This is not necessarily possible if a
+   DNS resource record is mapped directly to an LDAP entry.
+   Implementations that wish to use LDAP to master DNS zone information
+   are not precluded from doing so, and may simply avoid the ipHost and
+   ipNetwork classes.
 
-     The nisObject object class MAY be used as a generic means of repre-
-     senting NIS entities. Its use is not encouraged; where support for
-     entities not described in this schema is desired, an appropriate
-     schema should be devised. Implementors are strongly advised to sup-
-     port end-user extensible mappings between NIS entities and object
-     classes. (Where the nisObject class is used, the nisMapName
-     attribute may be used as a RDN.) The nisObject class might be used
-     to represent automount information.
+   This document redefines, although not exclusively, the ipNetwork
+   class defined in [RFC1279], in order to achieve consistent naming
+   with ipHost.  The ipNetworkNumber attribute is also used in the
+   siteContact object class [ROSE].
 
-5.6  Canonicalizing entries with multi-valued naming attributes
+   The authPassword and userPassword attributes are included in ipHost
+   such that hosts MAY be treated as authentication principals.  The
+   treatment of these attributes and inherent caveats considered in
+   Section 5.2 apply here also.
 
+   The trailing zeros in a network address MUST be omitted.  CIDR-style
 
 
 
-Howard                                                        [Page 16]
+Howard & Chu            Expires February 10, 2010              [Page 19]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
 
 
-     For entities such as hosts, services, networks, protocols, and
-     RPCs, where there may be one or more aliases, the respective
-     entry's relative distinguished name SHOULD be used to determine the
-     canonical name.  Any other values for the same attribute are used
-     as aliases. For example, the service described in section 5.5 has
-     the canonical name "domain" and exactly one alias, "nameserver".
+   network addresses (eg. 192.168.1/24) MAY be used.  Leading zeros MUST
+   be removed from all components of an IPv6 address string as defined
+   by [RFC2373], section 2.2, item 1.  The IPv6 address string MUST be
+   further normalized by following the "::" syntax as defined in
+   [RFC2373], section 2.2, item 2.  In addition, "::" MUST be used to
+   replace the longest string of zero bits.  If there are two or more
+   longest strings of zero bits, then the first string MUST be replaced.
+   In addition, the syntax defined by [RFC2373], section 2.2, item 3
+   MUST NOT be used.  IPv4 addresses MUST be represented by the IPv4
+   dotted decimal string syntax.
 
-     The schema in this document generally only defines one attribute
-     per class which is suitable for distinguishing an entity (excluding
-     any attributes with integer syntax; it is assumed that entries will
-     be distinguished on name). Usually, this is the common name (cn)
-     attribute.  This aids the DUA in determining the canonical name of
-     an entity, as it can examine the value of the relative distin-
-     guished name. Aliases are thus any values of the distinguishing
-     attribute (such as cn) which do not match the canonical name of the
-     entity.
+   For example the following address:
 
-     In the event that a different attribute is used to distinguish the
-     entry, as may be the case where these object classes are used as
-     auxiliary classes, the entry's canonical name may not be present in
-     the RDN. In this case, the DUA MUST choose one of the non-distin-
-     guished values to represent the entity's canonical name. As the
-     directory server guarantees no ordering of attribute values, it may
-     not be possible to distinguish an entry deterministically. This
-     ambiguity SHOULD NOT be resolved by mapping one directory entry
-     into multiple entities.
+       1080:0000:0:0:08:800:200C:417A
+       FF01:0:0:0:0:0:01
+       0:0:0:0:0:0:0:0001
+       0:0:0:0:0:0:0:0
 
+   MUST be normalized as:
 
-6.   Implementation focus
+       1080::8:800:200C:417A
+       FF01::101
+       0::1
+       ::
 
-     Gateways between NIS and LDAP have been developed by PADL Software
-     and Sun Microsystems. They both support this schema.
+5.4.  Interpreting Other Entities
 
-     An open source implementation of the C library resolution code has
-     been written and is available from PADL Software. It supports C
-     libraries on GNU, BSD, AIX, and Solaris operating systems. PADL
-     have also made available a set of scripts for migrating flat files
-     into a form suitable for loading into an LDAP server.
+   In general, a one-to-one mapping between entities and LDAP entries is
+   proposed, in that each entity has exactly one representation in the
+   DIT.  In some cases this is not feasible; for example, a service
+   which is represented in more than one protocol domain.  Consider the
+   following entry:
 
+       dn: cn=domain,ou=services,dc=aja,dc=com
+       objectClass: top
+       objectClass: ipService
+       cn: domain
+       cn: nameserver
+       ipServicePort: 53
+       ipServiceProtocol: tcp
+       ipServiceProtocol: udp
 
-7.   Security considerations
+   This entry MUST map to the following two (2) services entities:
 
-     The entirety of related security considerations are outside the
-     scope of this document.  It is noted that making passwords
-     encrypted with a widely understood hash function (such as crypt())
-     available to non-privileged users is dangerous because it exposes
-     them to dictionary and brute-force attacks.  This is proposed only
-     for compatibility with existing UNIX system implementations. Sites
+       domain  53/tcp  nameserver
+       domain  53/udp  nameserver
 
+   While the above two entities may be represented as separate LDAP
 
 
-Howard                                                        [Page 17]
+
+Howard & Chu            Expires February 10, 2010              [Page 20]
+\f
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+   entities, with different distinguished names (such as cn=domain+
+   ipServiceProtocol=tcp, ... and cn=domain+ipServiceProtocol=udp, ...)
+   it is convenient to represent them as a single entry.  If a service
+   is represented in multiple protocol domains with different ports,
+   then multiple entries are required; multi-valued RDNs MAY be used to
+   distinguish them.)
+
+   With the exception of authPassword and userPassword values, empty
+   values (consisting of a zero length string) are returned by the DUA
+   to the client.  The DUA MUST reject any entries which do not conform
+   to the schema (missing mandatory attributes).  Non-conforming entries
+   SHOULD be ignored while enumerating entries.
+
+   The nisDomainObject object class is provided to associate a NIS
+   domain with a naming context.  A DUA would retrieve the NIS domain
+   name from a configuration file and enumerate the naming contexts
+   served by an LDAP server, searching each naming context for
+   (nisDomain=%s).  The first matching entry that is found MAY be used
+   as a search base for configuration profile information or for entries
+   themselves.  For example, the following example shows an association
+   between the NIS domain "nis.aja.com" and the naming context
+   "dc=aja,dc=com":
+
+       dn: dc=aja,dc=com
+       objectClass: top
+       objectClass: domain
+       objectClass: nisDomainObject
+       dc: aja
+       nisDomain: nis.aja.com
+
+   The nisObject object class MAY be used as a generic means of
+   representing NIS entities.  Its use is not encouraged; where support
+   for entities not described in this schema is desired, an appropriate
+   schema should be devised.  Implementers are strongly advised to
+   support end-user extensible mappings between NIS entities and object
+   classes.  (Where the nisObject class is used, the nisMapName
+   attribute MAY be used as a RDN.)  The nisObject class might be used
+   to represent automount information.
+
+5.5.  Canonicalizing entries with multi-valued naming attributes
+
+   For entities such as hosts, services, networks, protocols, and RPCs,
+   where there may be one or more aliases, the respective entry's
+   relative distinguished name SHOULD be used to determine the canonical
+   name.  Any other values for the same attribute are used as aliases.
+   For example, the service described in Section 5.4 has the canonical
+   name "domain" and exactly one alias, "nameserver".
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 21]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+   The schema in this document generally only defines one attribute per
+   class which is suitable for distinguishing an entity (excluding any
+   attributes with integer syntax; it is assumed that entries will be
+   distinguished on name).  Usually, this is the common name (cn)
+   attribute.  This aids the DUA in determining the canonical name of an
+   entity, as it can examine the value of the relative distinguished
+   name.  Aliases are thus any values of the distinguishing attribute
+   (such as cn) which do not match the canonical name of the entity.
+
+   In the event that a different attribute is used to distinguish the
+   entry, as may be the case where these object classes are used as
+   auxiliary classes, the entry's canonical name may not be present in
+   the RDN.  In this case, the DUA MUST choose one of the non-
+   distinguished values to represent the entity's canonical name.  As
+   the directory server guarantees no ordering of attribute values, it
+   may not be possible to distinguish an entry deterministically.  This
+   ambiguity SHOULD NOT be resolved by mapping one directory entry into
+   multiple entities.
+
+
+
+
+
+
+
+
 
 
-     where security is critical SHOULD consider using a strong authenti-
-     cation service for user authentication.
 
-     Alternatively, the encrypted password could be made available only
-     to a subset of privileged DUAs, which would provide "shadow" pass-
-     word service to client applications. This may be difficult to
-     enforce.
 
-     Because the schema represents operating system-level entities,
-     access to these entities SHOULD be granted on a discretionary
-     basis. (There is little point in restricting access to data which
-     will be republished without restriction, however.) It is particu-
-     larly important that only administrators can modify entries defined
-     in this schema, with the exception of allowing a principal to
-     change their password (which may be done on behalf of the user by a
-     client bound as a superior principal, such that password restric-
-     tions may be enforced). For example, if a user were allowed to
-     change the value of their uidNumber attribute, they could subvert
-     security by equivalencing their account with the superuser account.
 
-     A subtree of the DIT which is to be republished by a DUA (such as a
-     NIS gateway) SHOULD be within the same administrative domain that
-     the republishing DUA represents. (For example, principals outside
-     an organization, while conceivably part of the DIT, should not be
-     considered with the same degree of authority as those within the
-     organization.)
 
-     Finally, care should be exercised with integer attributes of a sen-
-     sitive nature (particularly the uidNumber and gidNumber attributes)
-     which contain zero-length values. DUAs MAY treat such values as
-     corresponding to the "nobody" or "nogroup" user and group, respec-
-     tively.
 
 
-8.   Acknowledgements
 
-     Thanks to Bob Joslin of the Hewlett Packard Company, and to all
-     those that helped with this document's predecessor, RFC 2307.
 
-     UNIX is a registered trademark of The Open Group.
 
 
-9.   References
 
-     [RFC1057]
-          Sun Microsystems, Inc., "RPC: Remote Procedure Call: Protocol
-          Specification Version 2", RFC 1057, June 1988.
 
 
 
 
-Howard                                                        [Page 18]
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 22]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+6.  Implementation Focus
+
+   Gateways between NIS and LDAP have been developed by PADL Software
+   and Sun Microsystems.  They both support this schema.
+
+   An open source implementation of the C library resolution code has
+   been written and is available from PADL Software.  It supports C
+   libraries on GNU, BSD, AIX, and Solaris operating systems.  PADL have
+   also made available a set of scripts for migrating flat files into a
+   form suitable for loading into an LDAP server.  Another open source
+   implementation of the C library code is available from the OpenLDAP
+   Project.
 
 
-     [RFC1279]
-          S. Kille, "X.500 and Domains", RFC 1279, November 1991.
 
-     [RFC2373]
-          R. Hinden, S. Deering, "IP Version 6 Addressing Architecture",
-          RFC 2373, July 1998.
 
-     [RFC2119]
-          S. Bradner, "Key Words for use in RFCs to Indicate Requirement
-          Levels", RFC 2119, March 1997.
 
-     [RFC2251]
-          M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access
-          Protocol (v3)", RFC 2251, December 1997.
 
-     [RFC2252]
-          M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight Direc-
-          tory Access Protocol (v3): Attribute Syntax Definitions", RFC
-          2252, December 1997.
 
-     [RFC2254]
-          T. Howes, "The String Representation of LDAP Search Filters",
-          RFC 2254, December 1997.
 
-     [RFC2256]
-          M. Wahl, "A Summary of the X.500(96) User Schema for use with
-          LDAPv3", RFC 2256, December 1997.
 
-     [RFC3112]
-          K. Zeilenga, "LDAP Authentication Password Schema", RFC 3112,
-          May 2001.
 
-     [ROSE]
-          M. T. Rose, "The Little Black Book: Mail Bonding with OSI
-          Directory Services", ISBN 0-13-683210-5, Prentice-Hall, Inc.,
-          1992.
 
-     [X500]
-          "Information Processing Systems - Open Systems Interconnection
-          - The Directory: Overview of Concepts, Models and Service",
-          ISO/IEC JTC 1/SC21, International Standard 9594-1, 1988.
 
-     [XOPEN]
-          ISO/IEC 9945-1:1990, Information Technology - Portable Operat-
-          ing Systems Interface (POSIX) - Part 1: Systems Application
-          Programming Interface (API) [C Language]
 
-     [namedObject]
 
 
 
-Howard                                                        [Page 19]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 23]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+7.  Security Considerations
 
+   The entirety of related security considerations are outside the scope
+   of this document.  It is noted that making passwords encrypted with a
+   widely understood hash function (such as crypt()) available to non-
+   privileged users is dangerous because it exposes them to dictionary
+   and brute-force attacks.  This is proposed only for compatibility
+   with existing UNIX system implementations.  Sites where security is
+   critical SHOULD consider using a strong authentication service for
+   user authentication.
 
-          L. Howard, "A Structural Object Class for Arbitrary Auxiliary
-          Object Classes", INTERNET-DRAFT <draft-howard-namedOb-
-          ject-02.txt>, July 2002.
+   Alternatively, the encrypted password could be made available only to
+   a subset of privileged DUAs, which would provide "shadow" password
+   service to client applications.  This may be difficult to enforce.
 
+   Because the schema represents operating system-level entities, access
+   to these entities SHOULD be granted on a discretionary basis.  (There
+   is little point in restricting access to data which will be
+   republished without restriction, however.)  It is particularly
+   important that only administrators can modify entries defined in this
+   schema, with the exception of allowing a principal to change their
+   password (which MAY be done on behalf of the user by a client bound
+   as a superior principal, such that password restrictions MAY be
+   enforced).  For example, if a user were allowed to change the value
+   of their uidNumber attribute, they could subvert security by
+   equivalencing their account with the superuser account.
 
-10.  Authors' Address
+   A subtree of the DIT which is to be republished by a DUA (such as a
+   NIS gateway) SHOULD be within the same administrative domain that the
+   republishing DUA represents.  (For example, principals outside an
+   organization, while conceivably part of the DIT, should not be
+   considered with the same degree of authority as those within the
+   organization.)
 
-     Luke Howard
-     PADL Software Pty. Ltd.
-     PO Box 59
-     Central Park, Vic 3145
-     Australia
-     EMail: lukeh@padl.com
+   Finally, care should be exercised with integer attributes of a
+   sensitive nature (particularly the uidNumber and gidNumber
+   attributes) which contain zero-length values.  DUAs MAY treat such
+   values as corresponding to the "nobody" or "nogroup" user and group,
+   respectively.
 
-     Morteza Ansari
-     Infoblox Inc.
-     475 Potrero Avenue
-     Sunnyvale, CA 94085
-     USA
-     Phone: +1 408 716 4344
-     EMail: morteza@infoblox.com
 
 
-A.   Example entries
 
-     The examples described in this section are provided to illustrate
-     the schema described in this draft. They are not meant to be
-     exhaustive.
 
-     The following entry is an example of the posixAccount class:
 
-          dn: uid=lester,ou=people,dc=aja,dc=com
-          objectClass: top
-          objectClass: account
-          objectClass: posixAccount
-          uid: lester
-          cn: Lester the Nightfly
-          gecos: Lester
-          uidNumber: 10
-          gidNumber: 10
-          loginShell: /bin/csh
-          userPassword: {crypt}$X5/DBrWPOQQaI
-          homeDirectory: /home/lester
 
 
-     This corresponds the UNIX system password file entry:
 
-          lester:X5/DBrWPOQQaI:10:10:Lester:/home/lester:/bin/sh
 
 
 
-Howard                                                        [Page 20]
+Howard & Chu            Expires February 10, 2010              [Page 24]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+8.  Acknowledgements
+
+   Thanks to Bob Joslin of the Hewlett Packard Company, and to all those
+   that helped with this document's predecessor, RFC 2307.
+
+   UNIX is a registered trademark of The Open Group.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
-     The following entry is an example of the ipHost class:
 
-          dn: cn=josie.aja.com,ou=hosts,dc=aja,dc=com
-          objectClass: top
-          objectClass: device
-          objectClass: ipHost
-          objectClass: bootableDevice
-          objectClass: ieee802Device
-          cn: josie.aja.com
-          cn: www.aja.com
-          ipHostNumber: 10.0.0.1
-          macAddress: 00:00:92:90:ee:e2
-          bootFile: mach
-          bootParameter: root=dan.aja.com:/nfsroot/peg
-          bootParameter: swap=dan.aja.com:/nfsswap/peg
-          bootParameter: dump=dan.aja.com:/nfsdump/peg
 
-     This entry represents the host canonically josie.aja.com, also
-     known as www.aja.com. The Ethernet address and four boot parameters
-     are also specified.
 
-     An example of the nisNetgroup class:
 
-          dn: cn=nightfly,ou=netgroup,dc=aja,dc=com
-          objectClass: top
-          objectClass: nisNetgroup
-          cn: nightfly
-          nisNetgroupTriple: (charlemagne,peg,dunes.aja.com)
-          nisNetgroupTriple: (lester,-,)
-          memberNisNetgroup: kamakiriad
 
-     This entry represents the netgroup nightfly, which contains two
-     triples (the user charlemagne, the host peg, and the domain
-     dunes.aja.com; and, the user lester, no host, and any domain) and
-     one netgroup (kamakiriad).
 
-     Finally, an example of the nisObject class:
 
-          dn: nisMapName=tracks,dc=dunes,dc=aja,dc=com
-          objectClass: top
-          objectClass: nisMap
-          nisMapName: tracks
 
-          dn: cn=Maxine,nisMapName=tracks,dc=dunes,dc=aja,dc=com
-          objectClass: top
-          objectClass: nisObject
-          cn: Maxine
-          nisMapName: tracks
 
 
 
-Howard                                                        [Page 21]
+
+
+
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 25]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
 
+9.  References
 
-          nisMapEntry: Nightfly$4
+   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
+              STD 13, RFC 1034, November 1987.
 
-     This entry represents the NIS map tracks, and a single map entry.
+   [RFC1057]  Sun Microsystems, Inc., "RPC: Remote Procedure Call
+              Protocol specification: Version 2", RFC 1057, June 1988.
 
+   [RFC1279]  Hardcastle-Kille, S., "X.500 and Domains", RFC 1279,
+              November 1991.
 
-B.   Affected library functions
+   [RFC2373]  Hinden, R. and S. Deering, "IP Version 6 Addressing
+              Architecture", RFC 2373, July 1998.
 
-     The following functions are typically found in the C libraries of
-     most UNIX and POSIX compliant systems. An LDAP search filter
-     [RFC2254] which may be used to satisfy the function call is
-     included alongside each function name. Parameters are denoted by %s
-     and %d for string and integer arguments, respectively. Long lines
-     are broken.
+   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
+              Requirement Levels", BCP 14, RFC 2119, March 1997.
 
-          getpwnam()         (&(objectClass=posixAccount)(uid=%s))
-          getpwuid()         (&(objectClass=posixAccount)(uidNumber=%d))
-          getpwent()         (objectClass=posixAccount)
-          getspnam()         (&(objectClass=shadowAccount)(uid=%s))
-          getspent()         (objectClass=shadowAccount)
+   [RFC4511]  Sermersheim, J., "Lightweight Directory Access Protocol
+              (LDAP): The Protocol", RFC 4511, June 2006.
 
-          getgrnam()         (&(objectClass=posixGroup)(cn=%s))
-          getgrgid()         (&(objectClass=posixGroup)(gidNumber=%d))
-          getgrent()         (objectClass=posixGroup)
+   [RFC4515]  Smith, M. and T. Howes, "Lightweight Directory Access
+              Protocol (LDAP): String Representation of Search Filters",
+              RFC 4515, June 2006.
 
-          getservbyname()    (&(objectClass=ipService)(cn=%s)
-                              (ipServiceProtocol=%s))
-          getservbyport()    (&(objectClass=ipService)(ipServicePort=%d)
-                               (ipServiceProtocol=%s))
-          getservent()       (objectClass=ipService)
+   [RFC4519]  Sciberras, A., "Lightweight Directory Access Protocol
+              (LDAP): Schema for User Applications", RFC 4519,
+              June 2006.
 
-          getrpcbyname()     (&(objectClass=oncRpc)(cn=%s))
-          getrpcbynumber()   (&(objectClass=oncRpc)(oncRpcNumber=%d))
-          getrpcent()        (objectClass=oncRpc)
+   [RFC3112]  Zeilenga, K., "LDAP Authentication Password Schema",
+              RFC 3112, May 2001.
 
-          getprotobyname()   (&(objectClass=ipProtocol)(cn=%s))
-          getprotobynumber() (&(objectClass=ipProtocol)(ipProtocolNumber=%d))
-          getprotoent()      (objectClass=ipProtocol)
+   [I-D.behera-ldap-password-policy]
+              Sermersheim, J., Poitou, L., and H. Chu, "Password Policy
+              for LDAP Directories",
+              draft-behera-ldap-password-policy-10 (work in progress),
+              August 2009.
 
-          gethostbyname()    (&(objectClass=ipHost)(cn=%s))
-          gethostbyaddr()    (&(objectClass=ipHost)(ipHostNumber=%s))
-          gethostent()       (objectClass=ipHost)
+   [ROSE]     Rose, M., "The Little Black Book: Mail Bonding with OSI
+              Directory Services", ISBN 0-13-683210-5, 2001.
 
-          getnetbyname()     (&(objectClass=ipNetwork)(cn=%s))
-          getnetbyaddr()     (&(objectClass=ipNetwork)(ipNetworkNumber=%s))
-          getnetent()        (objectClass=ipNetwork)
+   [X.500]    ISO/IEC JTC 1/SC21, "Information Processing Systems - Open
+              Systems Interconnection - The Directory: Overview of
+              Concepts, Models and Service", 1988.
 
-          setnetgrent()      (&(objectClass=nisNetgroup)(cn=%s))
+   [UNIX]     Institute of Electrical and Electronics Engineers and The
+              Open Group, "IEEE Std 1003.1, 2004 Edition, Single UNIX
+              Specification Version 3", IEEE Standard 1003.1, 2004.
 
 
 
 
-Howard                                                        [Page 22]
+Howard & Chu            Expires February 10, 2010              [Page 26]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+   [PAM]      Samar, V. and R. Schemers, "Unified Login with Pluggable
+              Authentication Modules (PAM)", OSF RFC 86.0, October 1995.
+
+
+
+
+
+
+
+
+
+
+
 
 
-          getpublickey()     (&(objectClass=nisKeyObject)(...))
 
 
 
-C.   Suggested DIT structure
 
-     The cn attribute is typically used to name entities. The ipHostNum-
-     ber, ipNetworkNumber, and ipServiceProtocol attributes are also
-     naming attributes, such that multi-valued RDNs may be used to dis-
-     tinguish between, for example, different interfaces of a multi-
-     homed host.
 
-     The following DIT structure MAY be used for deploying this schema.
-     It is not required that DC-naming be used, but it is encouraged.
 
-     Naming context                        ObjectClass
-     ============================================================
-     ou=people,dc=...                      posixAccount
-                                           shadowAcount
-     ou=group,dc=...                       posixGroup
-     ou=services,dc=...                    ipService
-     ou=protocols,dc=...                   ipProtocol
-     ou=rpc,dc=...                         oncRpc
-     ou=hosts,dc=...                       ipHost
-     ou=ethers,dc=...                      ieee802Device
-                                           bootableDevice
-     ou=networks,dc=...                    ipNetwork
-     ou=netgroup,dc=...                    nisNetgroup
-     nisMapName=...,dc=...                 nisObject
-     automountMapName=...,dc=...           automountMap
 
 
-Intellectual Property Rights
 
-     The IETF takes no position regarding the validity or scope of any
-     Intellectual Property Rights or other rights that might be claimed
-     to pertain to the implementation or use of the technology described
-     in this document or the extent to which any license under such
-     rights might or might not be available; nor does it represent that
-     it has made any independent effort to identify any such rights.
-     Information on the procedures with respect to rights in RFC docu-
-     ments can be found in BCP 78 and BCP 79.
 
-     Copies of IPR disclosures made to the IETF Secretariat and any
-     assurances of licenses to be made available, or the result of an
-     attempt made to obtain a general license or permission for the use
-     of such proprietary rights by implementers or users of this speci-
-     fication can be obtained from the IETF on-line IPR repository at
 
 
 
-Howard                                                        [Page 23]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 27]
 \f
-Internet Draft              NIS X.500 schema               February 2005
+Internet-Draft           LDAP NameService Schema             August 2009
+
 
+Appendix A.  Example Entries
 
-     http://www.ietf.org/ipr.
+   The examples described in this section are provided to illustrate the
+   schema described in this draft.  They are not meant to be exhaustive.
 
-     The IETF invites any interested party to bring to its attention any
-     copyrights, patents or patent applications, or other proprietary
-     rights that may cover technology that may be required to implement
-     this standard.  Please address the information to the IETF at ietf-
-     ipr@ietf.org.
+   The following entry is an example of the posixAccount class:
 
+       dn: uid=lester,ou=people,dc=aja,dc=com
+       objectClass: top
+       objectClass: account
+       objectClass: posixAccount
+       uid: lester
+       cn: Lester the Nightfly
+       gecos: Lester
+       uidNumber: 10
+       gidNumber: 10
+       loginShell: /bin/csh
+       userPassword: {crypt}$X5/DBrWPOQQaI
+       homeDirectory: /home/lester
 
-Full Copyright Statement
+   This corresponds to the UNIX system password file entry:
 
-     Copyright (C) The Internet Society (2005).  This document is sub-
-     ject to the rights, licenses and restrictions contained in BCP 78,
-     and except as set forth therein, the authors retain all their
-     rights.
+       lester:X5/DBrWPOQQaI:10:10:Lester:/home/lester:/bin/sh
 
-     This document and the information contained herein are provided on
-     an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REP-
-     RESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
-     INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
-     THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
-     WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+   The following entry is an example of the ipHost class:
 
+       dn: cn=josie.aja.com,ou=hosts,dc=aja,dc=com
+       objectClass: top
+       objectClass: device
+       objectClass: ipHost
+       objectClass: bootableDevice
+       objectClass: ieee802Device
+       cn: josie.aja.com
+       cn: www.aja.com
+       ipHostNumber: 10.0.0.1
+       macAddress: 00:00:92:90:ee:e2
+       bootFile: mach
+       bootParameter: root=dan.aja.com:/nfsroot/peg
+       bootParameter: swap=dan.aja.com:/nfsswap/peg
+       bootParameter: dump=dan.aja.com:/nfsdump/peg
 
+   This entry represents the host canonically josie.aja.com, also known
+   as www.aja.com.  The Ethernet address and four boot parameters are
+   also specified.
 
+   An example of the nisNetgroup class:
 
 
 
 
 
+Howard & Chu            Expires February 10, 2010              [Page 28]
+\f
+Internet-Draft           LDAP NameService Schema             August 2009
 
 
+       dn: cn=nightfly,ou=netgroup,dc=aja,dc=com
+       objectClass: top
+       objectClass: nisNetgroup
+       cn: nightfly
+       nisNetgroupTriple: (charlemagne,peg,dunes.aja.com)
+       nisNetgroupTriple: (lester,-,)
+       memberNisNetgroup: kamakiriad
 
+   This entry represents the netgroup nightfly, which contains two
+   triples (the user charlemagne, the host peg, and the domain
+   dunes.aja.com; and, the user lester, no host, and any domain) and one
+   netgroup (kamakiriad).
 
+   Finally, an example of the nisObject class:
 
+       dn: nisMapName=tracks,dc=dunes,dc=aja,dc=com
+       objectClass: top
+       objectClass: nisMap
+       nisMapName: tracks
 
+       dn: cn=Maxine,nisMapName=tracks,dc=dunes,dc=aja,dc=com
+       objectClass: top
+       objectClass: nisObject
+       cn: Maxine
+       nisMapName: tracks
+       nisMapEntry: Nightfly$4
 
+   This represents the NIS map tracks, and a single map entry.
 
 
 
@@ -1339,6 +1610,183 @@ Full Copyright Statement
 
 
 
-Howard                                                        [Page 24]
+
+
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 29]
+\f
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+Appendix B.  Affected Library Functions
+
+   The following functions are typically found in the C libraries of
+   most UNIX and POSIX compliant systems [UNIX].  An LDAP search filter
+   string [RFC4515] which may be used to satisfy the function call is
+   included alongside each function name.  Parameters are denoted by %s
+   and %d for string and integer arguments, respectively.  Long lines
+   are broken:
+
+       getpwnam()         (&(objectClass=posixAccount)(uid=%s))
+       getpwuid()         (&(objectClass=posixAccount)(uidNumber=%d))
+       getpwent()         (objectClass=posixAccount)
+       getspnam()         (&(objectClass=shadowAccount)(uid=%s))
+       getspent()         (objectClass=shadowAccount)
+
+       getgrnam()         (&(objectClass=posixGroup)(cn=%s))
+       getgrgid()         (&(objectClass=posixGroup)(gidNumber=%d))
+       getgrent()         (objectClass=posixGroup)
+
+       getservbyname()    (&(objectClass=ipService)(cn=%s)
+                           (ipServiceProtocol=%s))
+       getservbyport()    (&(objectClass=ipService)(ipServicePort=%d)
+                            (ipServiceProtocol=%s))
+       getservent()       (objectClass=ipService)
+
+       getrpcbyname()     (&(objectClass=oncRpc)(cn=%s))
+       getrpcbynumber()   (&(objectClass=oncRpc)(oncRpcNumber=%d))
+       getrpcent()        (objectClass=oncRpc)
+
+       getprotobyname()   (&(objectClass=ipProtocol)(cn=%s))
+       getprotobynumber() (&(objectClass=ipProtocol)
+                             (ipProtocolNumber=%d))
+       getprotoent()      (objectClass=ipProtocol)
+
+       gethostbyname()    (&(objectClass=ipHost)(cn=%s))
+       gethostbyaddr()    (&(objectClass=ipHost)(ipHostNumber=%s))
+       gethostent()       (objectClass=ipHost)
+
+       getnetbyname()     (&(objectClass=ipNetwork)(cn=%s))
+       getnetbyaddr()     (&(objectClass=ipNetwork)(ipNetworkNumber=%s))
+       getnetent()        (objectClass=ipNetwork)
+
+       setnetgrent()      (&(objectClass=nisNetgroup)(cn=%s))
+       getpublickey()     (&(objectClass=nisKeyObject)(...))
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 30]
 \f
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+Appendix C.  Suggested DIT structure
+
+   The cn attribute is typically used to name entities.  The
+   ipHostNumber, ipNetworkNumber, and ipServiceProtocol attributes are
+   also naming attributes, such that multi-valued RDNs may be used to
+   distinguish between, for example, different interfaces of a
+   multihomed host.
+
+   The following DIT structure MAY be used for deploying this schema.
+   It is not required that DC-naming be used, but it is encouraged:
+
+       Naming context                        ObjectClass
+       ============================================================
+       ou=people,dc=...                      posixAccount
+                                             shadowAcount
+       ou=group,dc=...                       posixGroup
+       ou=services,dc=...                    ipService
+       ou=protocols,dc=...                   ipProtocol
+       ou=rpc,dc=...                         oncRpc
+       ou=hosts,dc=...                       ipHost
+       ou=ethers,dc=...                      ieee802Device
+                                             bootableDevice
+       ou=networks,dc=...                    ipNetwork
+       ou=netgroup,dc=...                    nisNetgroup
+       nisMapName=...,dc=...                 nisObject
+       automountMapName=...,dc=...           automountMap
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 31]
+\f
+Internet-Draft           LDAP NameService Schema             August 2009
+
+
+Authors' Addresses
+
+   Luke Howard
+   PADL Software Pty. Ltd.
+   PO Box 59
+   Central Park, Vic  3145
+   AU
+
+   Email: lukeh@padl.com
+
+
+   Howard Chu (editor)
+   Symas Corp.
+   18740 Oxnard Street, Suite 313A
+   Tarzana, California  91356
+   US
+
+   Phone: +1 818 757-7087
+   Email: hyc@symas.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Howard & Chu            Expires February 10, 2010              [Page 32]
+\f
diff --git a/doc/drafts/draft-howard-rfc2307bis-xx.xml b/doc/drafts/draft-howard-rfc2307bis-xx.xml
new file mode 100644 (file)
index 0000000..5d16284
--- /dev/null
@@ -0,0 +1,1338 @@
+<?xml version="1.0"?>
+<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
+       <!ENTITY rfc1034 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1034.xml'>
+       <!ENTITY rfc1057 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1057.xml'>
+       <!ENTITY rfc1279 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.1279.xml'>
+       <!ENTITY rfc2119 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
+       <!ENTITY rfc2195 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2195.xml'>
+       <!ENTITY rfc2373 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2373.xml'>
+       <!ENTITY rfc4422 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4422.xml'>
+       <!ENTITY rfc4511 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4511.xml'>
+       <!ENTITY rfc4513 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4513.xml'>
+       <!ENTITY rfc4515 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4515.xml'>
+       <!ENTITY rfc4517 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4517.xml'>
+       <!ENTITY rfc4519 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4519.xml'>
+       <!ENTITY rfc2831 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2831.xml'>
+       <!ENTITY rfc3062 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3062.xml'>
+       <!ENTITY rfc3112 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3112.xml'>
+       <!ENTITY rfc3383 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3383.xml'>
+       <!ENTITY rfc3672 PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3672.xml'>
+       <!ENTITY ppolicy PUBLIC '' 'http://xml.resource.org/public/rfc/bibxml3/reference.I-D.behera-ldap-password-policy.xml'>
+]>
+<?xml-stylesheet type='text/xsl' href='http://xml.resource.org/authoring/rfc2629.xslt' ?>
+<?rfc symrefs="yes" ?>
+<rfc 
+  obsoletes="2307"
+  ipr="trust200902" 
+  category="info"
+  docName="draft-howard-rfc2307bis-02">
+  <front>
+    <title abbrev="LDAP NameService Schema">
+      An Approach for Using LDAP as a Network Information Service
+    </title>
+    <author initials="L." surname="Howard" fullname="Luke Howard">
+      <organization abbrev="PADL Software">
+        PADL Software Pty. Ltd.
+      </organization>
+      <address>
+        <postal>
+          <street>PO Box 59</street>
+          <city>Central Park</city>
+          <region>Vic</region>
+          <code>3145</code>
+          <country>AU</country>
+        </postal>
+        <email>lukeh@padl.com</email>
+      </address>
+    </author>
+       <author initials="H." fullname="Howard Chu" surname="Chu" role="editor">
+               <organization>Symas Corp.</organization>
+               <address>
+                       <postal>
+                               <street>18740 Oxnard Street, Suite 313A</street>
+                               <city>Tarzana</city>
+                               <region>California</region>
+                               <code>91356</code>
+                               <country>US</country>
+                       </postal>
+                       <phone>+1 818 757-7087</phone>
+                       <email>hyc@symas.com</email>
+               </address>
+       </author>
+    <date month="August" year="2009"/>
+    <abstract>
+      <t>This document describes a mechanism for mapping
+      entities related to <xref target="UNIX">TCP/IP and the UNIX 
+      system </xref> into <xref target="X.500"/> entries so
+      that they may be resolved with the <xref target="RFC4511">
+      Lightweight Directory Access Protocol</xref>. A set of attribute types
+      and object classes are proposed, along with specific guidelines for
+      interpreting them.  The intention is to assist the deployment of 
+      LDAP as an organizational nameservice. No proposed solutions are 
+      intended as standards for the Internet. Rather, it is hoped that a 
+      general consensus will emerge as to the appropriate solution to such 
+      problems, leading eventually to the adoption of standards. The 
+      proposed mechanism has already been implemented with some success.
+</t>
+    </abstract>
+  </front>
+
+  <middle>
+    <section anchor="background" title="Background and Motivation">
+      <t>The UNIX (R) operating system, and its derivatives (specifically,
+      those which support TCP/IP and conform to the <xref target="UNIX">
+      X/Open Single UNIX specification</xref>) require a means of looking up 
+      entities, by matching them against search criteria or by enumeration. 
+      (Other operating systems that support TCP/IP may provide some means of
+      resolving some of these entities. This schema is applicable to those 
+      environments also.)</t>
+      <t>These entities include users, groups, IP services (which map names
+      to IP ports and protocols, and vice versa), IP protocols (which map
+      names to IP protocol numbers and vice versa), RPCs (which map names
+      to <xref target="RFC1057">ONC Remote Procedure Call</xref>
+      numbers and vice versa), NIS netgroups, booting information (boot 
+      parameters and MAC address mappings), filesystem mounts, IP hosts 
+      and networks.</t> 
+      <t>Resolution requests are made through a set of C functions, provided
+      in the UNIX system's C library. For example, the UNIX system utility 
+      "ls", which enumerates the contents of a filesystem directory,
+      uses the C library function getpwuid() in order to map user IDs to
+      login names. Once the request is made, it is resolved using a
+      "nameservice" which is supported by the client library. The
+      nameservice may be, at its simplest, a collection of files in the
+      local filesystem which are opened and searched by the C library. Other
+      common nameservices include the Network Information Service (NIS)
+      and the <xref target="RFC1034">Domain Name System (DNS)</xref>. (The latter is typically used for
+      resolving hosts, services and networks.) Both these nameservices
+      have the advantage of being distributed and thus permitting a common
+      set of entities to be shared amongst many clients.</t>
+      <t>LDAP is a distributed, hierarchical directory service access 
+      protocol which is used to access repositories of users and other
+      network-related entities. Because LDAP is often not tightly integrated
+      with the host operating system, information such as users may need
+      to be kept both in LDAP and in an operating system supported
+      nameservice such as NIS. By using LDAP as the primary means of
+      resolving these entities, these redundancy issues are minimized and
+      the scalability of LDAP can be exploited. (By comparison, NIS services
+      based on flat files do not have the scalability or extensibility of
+      LDAP or X.500.)</t>
+      <t>The object classes and attributes defined below are suitable for
+      representing the aforementioned entities in a form compatible with
+      LDAP and X.500 directory services.</t>
+    </section>
+    <section anchor="general" title="General Issues">
+      <section anchor="genera.terms" title="Terminology">
+        <t>The key words "MUST", "SHOULD", and "MAY" used in this document
+        are to be interpreted as described in
+        <xref target="RFC2119"/>.</t>
+        <t>For the purposes of this document, the term "nameservice" refers
+        to a service, such as NIS or flat files, that is used by the
+        operating system to resolve entities within a single, local naming
+        context. Contrast this with a "directory service" such as LDAP, which
+        supports extensible schema and multiple naming contexts.</t>
+        <t>The term "NIS-related entities" broadly refers to entities which
+        are typically resolved using the Network Information Service. (NIS
+        was previously known as YP.) Deploying LDAP for resolving these
+        entities does not imply that NIS be used, as a gateway or otherwise.
+        In particular, the host and network classes are generically
+        applicable, and may be implemented on any system that wishes to use
+        LDAP or X.500 for host and network resolution.</t>
+        <t>The "DUA" (directory user agent) refers to the LDAP client
+        querying these entities, such as an LDAP to NIS gateway or the C
+        library. The "client" refers to the application which ultimately
+        makes use of the information returned by the resolution. It
+        is irrelevant whether the DUA and the client reside within the same
+        address space. The act of the DUA making this information to the
+        client is termed "republishing".</t>
+        <t>To avoid confusion, the term "login name" refers to the user's
+        login name (being the value of the uid attribute) and the term
+        "user ID" refers to the user's integer identification number (being
+        the value of the uidNumber attribute).</t>
+        <t>The phrases "resolving an entity" and "resolution of entities"
+        refer respectively to enumerating NIS-related entities of a given
+        type, and matching them against a given search criterion. One or
+        more entities are returned as a result of successful "resolutions"
+        (a "match" operation will only return one entity).</t>
+        <t>The use of the term UNIX does not confer upon this schema the
+        endorsement of owners of the UNIX trademark. Where necessary, the
+        term "TCP/IP entity" is used to refer to protocols, services,
+        hosts, and networks, and the term "UNIX entity" to its complement.
+        (The former category does not mandate the host operating system
+        supporting the interfaces required for resolving UNIX entities.)</t>
+        <t>The OIDs defined below are derived from iso(1) org(3) dod(6) 
+        internet(1) directory(1) nisSchema(1)</t>
+      </section>
+         <section title="Schema">
+        <t>The attributes and classes defined in this document are summarized
+        below.</t>
+      <section anchor="general.attrs" title="Attributes">
+        <t>The following attributes are defined in this document:
+          <list style="empty">
+            <t>
+              uidNumber<vspace blankLines="0"/>
+              gidNumber<vspace blankLines="0"/>
+              gecos<vspace blankLines="0"/>
+              homeDirectory<vspace blankLines="0"/>
+              loginShell<vspace blankLines="0"/>
+              shadowLastChange<vspace blankLines="0"/>
+              shadowMin<vspace blankLines="0"/>
+              shadowMax<vspace blankLines="0"/>
+              shadowWarning<vspace blankLines="0"/>
+              shadowInactive<vspace blankLines="0"/>
+              shadowExpire<vspace blankLines="0"/>
+              shadowFlag<vspace blankLines="0"/>
+              memberUid<vspace blankLines="0"/>
+              memberNisNetgroup<vspace blankLines="0"/>
+              nisNetgroupTriple<vspace blankLines="0"/>
+              ipServicePort<vspace blankLines="0"/>
+              ipServiceProtocol<vspace blankLines="0"/>
+              ipProtocolNumber<vspace blankLines="0"/>
+              oncRpcNumber<vspace blankLines="0"/>
+              ipHostNumber<vspace blankLines="0"/>
+              ipNetworkNumber<vspace blankLines="0"/>
+              ipNetmaskNumber<vspace blankLines="0"/>
+              macAddress<vspace blankLines="0"/>
+              bootParameter<vspace blankLines="0"/>
+              bootFile<vspace blankLines="0"/>
+              nisMapName<vspace blankLines="0"/>
+              nisMapEntry<vspace blankLines="0"/>
+              nisPublicKey<vspace blankLines="0"/>
+              nisSecretKey<vspace blankLines="0"/>
+              nisDomain<vspace blankLines="0"/>
+              automountMapName<vspace blankLines="0"/>
+              automountKey<vspace blankLines="0"/>
+              automountInformation<vspace blankLines="0"/>
+            </t>
+          </list>
+          Additionally, some of the attributes defined in 
+          <xref target="RFC4519"/> and
+          <xref target="RFC3112"/> are required.
+        </t>
+      </section>
+         <section anchor="attroptions" title="Attribute Option">
+           <t>Centralizing a name service in LDAP allows heterogeneous
+               systems to obtain their information from a single place. However
+               in some cases, this information cannot be used uniformly on all
+               of the client systems. These attribute options are defined to allow
+               system-specific values to be used where necessary. The options
+               are defined as the following:
+               <list style="empty">
+               <t>host-&lt;hostname><vspace blankLines="0"/>
+               hostos-&lt;ostype></t>
+               </list>
+               where hostname is a string representing the name of a specific
+               machine, and ostype is a string representing a particular
+               operating system.</t>
+               <t>For example, a user named "Babs Jensen" may have a different
+               home directory on different machines. This could be represented as:
+               <list style="empty">
+               <t>
+               homeDirectory: /home/babsj<vspace blankLines="0"/>
+               homeDirectory;hostos-sunos: /export/home/bjensen<vspace blankLines="0"/>
+               homeDirectory;host-babshost: /home/root
+               </t>
+               </list></t>
+               <t>These attribute options follow sub-typing semantics. If a DUA
+               requests an attribute to be returned in a search operation, and
+               does not specify an option, all subtypes of that attribute are
+               returned.</t>
+       </section>
+      <section anchor="general.classes" title="Object Classes">
+        <t>The following object classes are defined in this document:
+          <list style="empty">
+            <t>
+              posixAccount<vspace blankLines="0"/>
+              shadowAccount<vspace blankLines="0"/>
+              posixGroup<vspace blankLines="0"/>
+              ipService<vspace blankLines="0"/>
+              ipProtocol<vspace blankLines="0"/>
+              oncRpc<vspace blankLines="0"/>
+              ipHost<vspace blankLines="0"/>
+              ipNetwork<vspace blankLines="0"/>
+              nisNetgroup<vspace blankLines="0"/>
+              nisMap<vspace blankLines="0"/>
+              nisObject<vspace blankLines="0"/>
+              ieee802Device<vspace blankLines="0"/>
+              bootableDevice<vspace blankLines="0"/>
+              nisKeyObject<vspace blankLines="0"/>
+              nisDomainObject<vspace blankLines="0"/>
+              automountMap<vspace blankLines="0"/>
+              automount<vspace blankLines="0"/>
+            </t>
+          </list>
+          Additionally, some of the attributes defined in 
+          <xref target="RFC4519"/> are required.
+        </t>
+      </section>
+        </section>
+    </section>
+    <section anchor="attrdefs" title="Attribute Definitions">
+      <t>This section contains attribute definitions to be implemented 
+      by DUAs supporting this schema:
+      <figure title="">
+        <artwork>
+  ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
+      DESC 'An integer uniquely identifying a user in an
+            administrative domain'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.1 NAME 'gidNumber'
+      DESC 'An integer uniquely identifying a group in an
+            administrative domain'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.2 NAME 'gecos'
+      DESC 'The GECOS field; the common name'
+      EQUALITY caseIgnoreMatch
+      SUBSTRINGS caseIgnoreSubstringsMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.3 NAME 'homeDirectory'
+      DESC 'The absolute path to the home directory'
+      EQUALITY caseExactIA5Match
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.4 NAME 'loginShell'
+      DESC 'The path to the login shell'
+      EQUALITY caseExactIA5Match
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.5 NAME 'shadowLastChange'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.6 NAME 'shadowMin'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.7 NAME 'shadowMax'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.8 NAME 'shadowWarning'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.9 NAME 'shadowInactive'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.10 NAME 'shadowExpire'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.11 NAME 'shadowFlag'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.12 NAME 'memberUid'
+      EQUALITY caseExactMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.13 NAME 'memberNisNetgroup'
+      EQUALITY caseExactMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.14 NAME 'nisNetgroupTriple'
+      DESC 'Netgroup triple'
+      EQUALITY caseIgnoreMatch
+      SUBSTRINGS caseIgnoreSubstringsMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.15 NAME 'ipServicePort'
+      DESC 'Service port number'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.16 NAME 'ipServiceProtocol'
+      DESC 'Service protocol name'
+      EQUALITY caseIgnoreMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber'
+      DESC 'IP protocol number'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.18 NAME 'oncRpcNumber'
+      DESC 'ONC RPC number'
+      EQUALITY integerMatch
+      ORDERING integerOrderingMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.19 NAME 'ipHostNumber'
+      DESC 'IPv4 addresses as a dotted decimal omitting leading
+            zeros or IPv6 addresses as defined in RFC2373'
+      EQUALITY caseIgnoreIA5Match
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.20 NAME 'ipNetworkNumber'
+      DESC 'IP network omitting leading zeros, eg. 192.168'
+      EQUALITY caseIgnoreIA5Match
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.21 NAME 'ipNetmaskNumber'
+      DESC 'IP netmask omitting leading zeros, eg. 255.255.255.0'
+      EQUALITY caseIgnoreIA5Match
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.22 NAME 'macAddress'
+      DESC 'MAC address in maximal, colon separated hex
+            notation, eg. 00:00:92:90:ee:e2'
+      EQUALITY caseIgnoreIA5Match
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.23 NAME 'bootParameter'
+      DESC 'rpc.bootparamd parameter'
+      EQUALITY caseExactIA5Match
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.24 NAME 'bootFile'
+      DESC 'Boot image name'
+      EQUALITY caseExactIA5Match
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.26 NAME 'nisMapName'
+      DESC 'Name of a generic NIS map'
+      EQUALITY caseIgnoreMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.27 NAME 'nisMapEntry'
+      DESC 'A generic NIS entry'
+      EQUALITY caseExactMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024}
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.28 NAME 'nisPublicKey'
+      DESC 'NIS public key'
+      EQUALITY octetStringMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.29 NAME 'nisSecretKey'
+      DESC 'NIS secret key'
+      EQUALITY octetStringMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.40
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.30 NAME 'nisDomain'
+      DESC 'NIS domain'
+      EQUALITY caseIgnoreIA5Match
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.31 NAME 'automountMapName'
+      DESC 'automount Map Name'
+      EQUALITY caseExactMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.32 NAME 'automountKey'
+      DESC 'Automount Key value'
+      EQUALITY caseExactMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+      SINGLE-VALUE )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.1.33 NAME 'automountInformation'
+      DESC 'Automount information'
+      EQUALITY caseExactMatch
+      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+      SINGLE-VALUE )
+        </artwork>
+      </figure></t>
+    </section>
+    <section anchor="classdefs" title="Class Definitions">
+      <t>This section contains class definitions to be implemented by DUAs
+      supporting the schema.</t>
+      <t>Various schema for mail routing and delivery using LDAP directories
+      have been proposed, and as such this document does not consider
+      schema for representing mail aliases or distribution lists.
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.0 NAME 'posixAccount' SUP top AUXILIARY
+      DESC 'Abstraction of an account with POSIX attributes'
+      MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
+      MAY ( authPassword $ userPassword $ loginShell $ gecos $
+            description ) )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.1 NAME 'shadowAccount' SUP top AUXILIARY
+      DESC 'Additional attributes for shadow passwords'
+      MUST uid
+      MAY ( authPassword $ userPassword $ description $
+            shadowLastChange $ shadowMin $ shadowMax $
+            shadowWarning $ shadowInactive $
+            shadowExpire $ shadowFlag ) )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.2 NAME 'posixGroup' SUP top AUXILIARY
+      DESC 'Abstraction of a group of accounts'
+      MUST gidNumber
+      MAY ( authPassword $ userPassword $ memberUid $
+            description ) )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.3 NAME 'ipService' SUP top STRUCTURAL
+      DESC 'Abstraction an Internet Protocol service.
+            Maps an IP port and protocol (such as tcp or udp)
+            to one or more names; the distinguished value of
+            the cn attribute denotes the service's canonical
+            name'
+      MUST ( cn $ ipServicePort $ ipServiceProtocol )
+      MAY description )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.4 NAME 'ipProtocol' SUP top STRUCTURAL
+      DESC 'Abstraction of an IP protocol. Maps a protocol number
+            to one or more names. The distinguished value of the cn
+            attribute denotes the protocol canonical name'
+      MUST ( cn $ ipProtocolNumber )
+      MAY description )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.5 NAME 'oncRpc' SUP top STRUCTURAL
+      DESC 'Abstraction of an Open Network Computing (ONC)
+           [RFC1057] Remote Procedure Call (RPC) binding.
+           This class maps an ONC RPC number to a name.
+           The distinguished value of the cn attribute denotes
+           the RPC service canonical name'
+      MUST ( cn $ oncRpcNumber )
+      MAY description )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.6 NAME 'ipHost' SUP top AUXILIARY
+      DESC 'Abstraction of a host, an IP device. The distinguished
+            value of the cn attribute denotes the host's canonical
+         name. Device SHOULD be used as a structural class'
+      MUST ( cn $ ipHostNumber )
+      MAY ( authPassword $ userPassword $ l $ description $
+            manager ) )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.7 NAME 'ipNetwork' SUP top STRUCTURAL
+      DESC 'Abstraction of a network. The distinguished value of
+            the cn attribute denotes the network canonical name'
+      MUST ipNetworkNumber
+      MAY ( cn $ ipNetmaskNumber $ l $ description $ manager ) )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.8 NAME 'nisNetgroup' SUP top STRUCTURAL
+      DESC 'Abstraction of a netgroup. May refer to other 
+            netgroups'
+      MUST cn
+      MAY ( nisNetgroupTriple $ memberNisNetgroup $ description ) )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.9 NAME 'nisMap' SUP top STRUCTURAL
+      DESC 'A generic abstraction of a NIS map'
+      MUST nisMapName
+      MAY description )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.10 NAME 'nisObject' SUP top STRUCTURAL
+      DESC 'An entry in a NIS map'
+      MUST ( cn $ nisMapEntry $ nisMapName )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.11 NAME 'ieee802Device' SUP top AUXILIARY
+      DESC 'A device with a MAC address; device SHOULD be
+            used as a structural class'
+      MAY macAddress )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.12 NAME 'bootableDevice' SUP top AUXILIARY
+      DESC 'A device with boot parameters; device SHOULD be
+            used as a structural class'
+      MAY ( bootFile $ bootParameter ) )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.14 NAME 'nisKeyObject' SUP top AUXILIARY
+      DESC 'An object with a public and secret key'
+      MUST ( cn $ nisPublicKey $ nisSecretKey )
+      MAY ( uidNumber $ description ) )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.15 NAME 'nisDomainObject' SUP top AUXILIARY
+      DESC 'Associates a NIS domain with a naming context'
+      MUST nisDomain )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.16 NAME 'automountMap' SUP top STRUCTURAL
+      MUST ( automountMapName )
+      MAY description )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.17 NAME 'automount' SUP top STRUCTURAL
+      DESC 'Automount information'
+      MUST ( automountKey $ automountInformation )
+      MAY description )
+        </artwork>
+      </figure>
+      <figure>
+        <artwork>
+  ( 1.3.6.1.1.1.2.18 NAME 'groupOfMembers' SUP top STRUCTURAL
+      DESC 'A group with members (DNs)'
+      MUST cn
+      MAY ( businessCategory $ seeAlso $ owner $ ou $ o $
+            description $ member ) )
+        </artwork>
+      </figure></t>
+    </section>
+    <section anchor="impl" title="Implementation Details">
+      <section anchor="impl.res_methods" 
+        title="Suggested Resolution Methods">
+        <t>The preferred means of directing a client application (one using
+        the shared services of the C library) to use LDAP as its information
+        source for the functions listed in <xref target="appendixb"/> is to modify the
+        source code to directly query LDAP. As the source to commercial C
+        libraries and applications is rarely available to the end-user, one
+        could emulate a supported nameservice (such as NIS). (This is also
+        an appropriate opportunity to perform caching of entries across
+        process address spaces.) In the case of NIS, reference
+        implementations are widely available and the RPC interface is well
+        known.</t>
+        <t>The means by which the operating system is directed to use LDAP
+        is implementation dependent. For example, some operating systems
+        and C libraries support end-user extensible resolvers using
+        dynamically loadable libraries and a nameservice "switch" (NSS).
+               The means in which the DUA locates LDAP servers is also
+               implementation dependent.</t>
+      </section>
+      <section anchor="impl.interp_user_group" 
+        title="Interpreting User and Group Entries">
+        <t>User and group resolution is initiated by the functions prefixed
+        by getpw and getgr respectively. The uid attribute contains the
+        user's login name. The cn attribute, in posixGroup entries, contains
+        the group's name.  This document preserves the use of the uid
+        attribute even though, being a naming attribute, its syntax is case
+        insensitive. This may cause a problem with existing deployments where
+        there exist login names differing only in case. If DUAs support
+        attribute mapping, a different attribute MAY be used to represent
+        users' login names.</t>
+        <t>The account object class provides a convenient structural class
+        for posixAccount, and SHOULD be used where additional attributes
+        are not required. Likewise, the groupOfMembers object class
+               SHOULD be used for groups. (The groupOfUniqueNames object class
+               is deprecated and SHOULD NOT be used.)</t>
+        <t>It is suggested that uid and cn are used as the naming attribute
+        for posixAccount and posixGroup entries, respectively. Group members
+        may either be login names (values of memberUid) or distinguished
+        names (values of member). In the latter case, the distinguished
+        name must be mapped to one or more login names by examining the 
+        name's RDN or, if it is not distinguished by uid, performing a base
+        search on the DN with a filter of "(objectclass=*)". DUAs MAY wish
+        to cache DN to login name mappings. The DUA MAY traverse nested
+        groups.</t>
+        <t>An account's GECOS field is preferably determined by a value of
+        the gecos attribute. If no gecos attribute exists, the value of the
+        cn attribute MUST be used. (The existence of the gecos attribute
+        allows information embedded in the GECOS field, such as a user's
+        telephone number, to be returned to the client without overloading
+        the cn attribute. It also accommodates directories where the common
+        name does not contain the user's full name.)</t>
+
+               <section title="Using Attribute Options">
+               <t>Some posixAccount attributes may be accompanied by <xref target="attroptions">options</xref>
+               identifying particular hosts or operating system types. The
+               attribute with a hostos option matching the operating system of
+               the DUA SHOULD be used in preference to an attribute without
+               any associated options. The attribute with a host option matching
+               the hostname of the DUA SHOULD be used in preference to any
+               other attribute.</t>
+               </section>
+               <section title="Authentication Considerations">
+               <section title="Using Password Values">
+               <t>When authenticating using a NIS to LDAP gateway or using NSS,
+               a lookup is performed to retrieve the password attribute and
+               the value is used in the DUA to authenticate a user. This
+               approach to authentication is deprecated, as it requires that
+               read access to the password attribute be granted across a
+               network.</t>
+        <t>An entry of class posixAccount, posixGroup, or shadowAccount
+        without an authPassword or userPassword attribute MUST NOT be used
+        for authentication.  In this case the client SHOULD be returned a
+        non-matchable password such as "x".</t>
+        <t>If userPassword is used, its values MUST be represented by
+        the following syntax:
+        <figure>
+          <artwork>
+    passwordvalue   = schemeprefix hashedpasswd
+    schemeprefix    = "{" scheme "}"
+    scheme          = "crypt" / "md5" / "sha" / "ssha" / altscheme
+    altscheme       = "x-" keystring
+    hashedpasswd    = hashed password
+          </artwork>
+        </figure></t>
+        <t>The hashed password contains a plaintext key hashed using
+        the algorithm scheme.  If the schema is "sha", the hashed
+        password is the base64 encoding of the SHA-1 digest of the plaintext
+        password.</t>
+        <t>userPassword values which do not adhere to this syntax MUST NOT be
+        used for authentication. The DUA MUST iterate through the values of
+        the attribute until a value matching the above syntax is found.
+        Only if hashedpassword is an empty string does the user have no
+        password.  DUAs are not required to consider hashing schemes
+        which the client will not recognize; in most cases, it may be 
+        sufficient to consider only "crypt".</t>
+        <t>DUA MAY use the authPassword attribute instead of userPassword,
+        defined in <xref target="RFC3112"/>.  The DUA MUST iterate the values of the
+        authPassword attribute until a value whose scheme is CRYPT is found.
+        The DUA MAY iterate through the values of the userPassword
+        attribute, using the syntax defined here, until a value
+        whose scheme is CRYPT is found. If no conforming value is found,
+        the client MUST be returned a non-matchable password such as "x".
+        Authentication using schemes other than CRYPT is, although advisable,
+        beyond the scope of this document</t>
+        <t>Below is an example of an authPassword attribute:
+        <figure>
+          <artwork>
+    authPassword: CRYPT$X5/DBrWPOQQaI
+          </artwork>
+        </figure></t>
+        <t>Below is an example of a (deprecated) userPassword attribute:
+        <figure>
+          <artwork>
+    userPassword: {CRYPT}X5/DBrWPOQQaI
+          </artwork>
+        </figure></t>
+        <t>A DUA MAY utilize the attributes in the shadowAccount class to
+        provide shadow password service (getspnam() and getspent()). In such
+        cases, the DUA MUST NOT make use of the userPassword attribute for
+        getpwnam() et al, and MUST return a non-matchable password (such as
+        "x") to the client instead.</t>
+               </section>
+               <section title="Using LDAP Bind">
+               <t>The preferred method for authenticating users with LDAP is to
+               perform an LDAP Bind operation with the user's name and password.
+               In this case the method the DSA uses to store and verify the password
+               is completely internal to the DSA and not of any concern to the DUA.</t>
+               <t>Likewise, using the shadowAccount attributes requires the DUA to
+               handle password policy enforcement. However the policies expressed
+               in the shadowAccount are limited in scope, and not uniformly
+               applicable to all the systems that will be using LDAP.</t>
+               <t>The preferred method is to leave password policy enforcement
+               to the DSA, so that it will be uniformly enforced across all of
+               the various systems that rely on the directory. This enforcement
+               occurs implicitly when authenticating using LDAP Bind if the
+               DSA supports the
+               <xref target="I-D.behera-ldap-password-policy">LDAP password
+               policy</xref> mechanisms.</t>
+               <t>The means in which authentication in the DUA is configured
+               is implementation dependent. Typically it is accomplished using
+               <xref target="PAM"/>. Further details of authentication are
+               beyond the scope of this document.</t>
+               </section>
+          </section>
+          <section title="Naming Considerations">
+          <t>On UNIX systems, users and groups reside in separate name spaces
+          and it is common for the same name to be used by both a user and a
+          group. Since they are in separate name spaces there is no ambiguity
+          and no conflict. However, when integrating a name service into LDAP
+          the directory may be used with other systems besides UNIX and its
+          derivatives. In particular, the Microsoft Windows operating system
+          may also use LDAP for its own name service. In Windows, users and
+          groups reside in a single name space and so one cannot use the same
+          name for both a user and a group.</t>
+          <t>Conflicts in naming conventions may arise in other deployments
+          as well, and should be carefully taken into account when migrating
+          from other naming services into LDAP.</t>
+          </section>
+      </section>
+      <section anchor="impl.interp_host_net" 
+        title="Interpreting Hosts and Networks">
+        <t>The ipHostNumber and ipNetworkNumber attributes are defined in
+        preference to dNSRecord (defined in <xref target="RFC1279"/>), in order to simplify
+        the DUA's role in interpreting entries in the directory. A dNSRecord
+        expresses a complete resource record, including time to live and
+        class data, which is extraneous to this schema.</t>
+        <t>Additionally, the ipHost and ipNetwork classes permit a host or
+        network (respectively) and all its aliases to be represented by a
+        single entry in the directory. This is not necessarily possible if
+        a DNS resource record is mapped directly to an LDAP entry.
+        Implementations that wish to use LDAP to master DNS zone information
+        are not precluded from doing so, and may simply avoid the ipHost and
+        ipNetwork classes.</t>
+        <t>This document redefines, although not exclusively, the ipNetwork
+        class defined in <xref target="RFC1279"/>, in
+        order to achieve consistent naming with ipHost. The ipNetworkNumber
+        attribute is also used in the <xref target="ROSE">siteContact 
+        object class</xref>.</t>
+        <t>The authPassword and userPassword attributes are included in
+        ipHost such that hosts MAY be treated as authentication principals.
+        The treatment of these attributes and inherent caveats considered in
+        <xref target="impl.interp_user_group"></xref> apply here also.</t>
+        <t>The trailing zeros in a network address MUST be omitted.
+        CIDR-style network addresses (eg. 192.168.1/24) MAY be used. Leading
+        zeros MUST be removed from all components of an IPv6 address string
+        as defined by <xref target="RFC2373"/>, section 2.2, 
+        item 1.  The IPv6 address string MUST be further normalized
+        by following the "::" syntax as defined in 
+        <xref target="RFC2373"/>, section 2.2, item 2.
+        In addition, "::" MUST be used to replace the longest string of zero
+        bits.  If there are two or more longest strings of zero bits, then
+        the first string MUST be replaced. In addition, the syntax defined 
+        by <xref target="RFC2373"/>, section 2.2, item 3
+        MUST NOT be used.  IPv4 addresses MUST be represented by the IPv4
+        dotted decimal string syntax.</t>
+        <t>For example the following address:
+        <figure>
+          <artwork>
+    1080:0000:0:0:08:800:200C:417A
+    FF01:0:0:0:0:0:01
+    0:0:0:0:0:0:0:0001
+    0:0:0:0:0:0:0:0
+          </artwork>
+        </figure>
+        MUST be normalized as:
+        <figure>
+          <artwork>
+    1080::8:800:200C:417A
+    FF01::101
+    0::1
+    ::
+          </artwork>
+        </figure></t>
+      </section>
+      <section anchor="impl.interp_other" 
+        title="Interpreting Other Entities">
+        <t>In general, a one-to-one mapping between entities and LDAP entries
+        is proposed, in that each entity has exactly one representation in
+        the DIT. In some cases this is not feasible; for example, a service
+        which is represented in more than one protocol domain. Consider the
+        following entry:
+        <figure>
+          <artwork>
+    dn: cn=domain,ou=services,dc=aja,dc=com
+    objectClass: top
+    objectClass: ipService
+    cn: domain
+    cn: nameserver
+    ipServicePort: 53
+    ipServiceProtocol: tcp
+    ipServiceProtocol: udp
+          </artwork>
+        </figure>
+        This entry MUST map to the following two (2) services entities:
+        <figure>
+          <artwork>
+    domain  53/tcp  nameserver
+    domain  53/udp  nameserver
+          </artwork>
+        </figure>
+        While the above two entities may be represented as separate LDAP
+        entities, with different distinguished names (such as 
+        cn=domain+ipServiceProtocol=tcp, ... and 
+        cn=domain+ipServiceProtocol=udp, ...) it is convenient to represent
+        them as a single entry. If a service is represented in multiple
+        protocol domains with different ports, then multiple entries are
+        required; multi-valued RDNs MAY be used to distinguish them.)</t>
+        <t>With the exception of authPassword and userPassword values, empty
+        values (consisting of a zero length string) are returned by the DUA
+        to the client. The DUA MUST reject any entries which do not conform
+        to the schema (missing mandatory attributes). Non-conforming
+        entries SHOULD be ignored while enumerating entries.</t>
+        <t>The nisDomainObject object class is provided to associate a NIS
+        domain with a naming context. A DUA would retrieve the NIS domain
+        name from a configuration file and enumerate the naming contexts
+        served by an LDAP server, searching each naming context for 
+        (nisDomain=%s).  The first matching entry that is found MAY be used
+        as a search base for configuration profile information or for entries
+        themselves. For example, the following example shows an association
+        between the NIS domain "nis.aja.com" and the naming context
+        "dc=aja,dc=com":
+        <figure>
+          <artwork>
+    dn: dc=aja,dc=com
+    objectClass: top
+    objectClass: domain
+    objectClass: nisDomainObject
+    dc: aja
+    nisDomain: nis.aja.com
+          </artwork>
+        </figure>
+        The nisObject object class MAY be used as a generic means of 
+        representing NIS entities. Its use is not encouraged; where support
+        for entities not described in this schema is desired, an appropriate
+        schema should be devised. Implementers are strongly advised to 
+        support end-user extensible mappings between NIS entities and object
+        classes. (Where the nisObject class is used, the nisMapName
+        attribute MAY be used as a RDN.) The nisObject class might be used
+        to represent automount information.</t>
+      </section>
+      <section anchor="impl.canon_entries" 
+        title="Canonicalizing entries with multi-valued naming attributes">
+        <t>For entities such as hosts, services, networks, protocols, and
+        RPCs, where there may be one or more aliases, the respective entry's
+        relative distinguished name SHOULD be used to determine the canonical
+        name.  Any other values for the same attribute are used as aliases.
+        For example, the service described in 
+        <xref target="impl.interp_other" /> has the canonical name "domain"
+        and exactly one alias, "nameserver".</t>
+        <t>The schema in this document generally only defines one attribute
+        per class which is suitable for distinguishing an entity (excluding
+        any attributes with integer syntax; it is assumed that entries will
+        be distinguished on name). Usually, this is the common name (cn)
+        attribute.  This aids the DUA in determining the canonical name of
+        an entity, as it can examine the value of the relative distinguished
+        name. Aliases are thus any values of the distinguishing attribute
+        (such as cn) which do not match the canonical name of the entity.</t>
+        <t>In the event that a different attribute is used to distinguish the
+        entry, as may be the case where these object classes are used as
+        auxiliary classes, the entry's canonical name may not be present in
+        the RDN. In this case, the DUA MUST choose one of the 
+        non-distinguished values to represent the entity's canonical name. As
+        the directory server guarantees no ordering of attribute values, it
+        may not be possible to distinguish an entry deterministically. This
+        ambiguity SHOULD NOT be resolved by mapping one directory entry into
+        multiple entities.</t>
+      </section>
+    </section>
+    <section anchor="focus" title="Implementation Focus">
+      <t>Gateways between NIS and LDAP have been developed by PADL Software
+      and Sun Microsystems. They both support this schema.</t>
+      <t>An open source implementation of the C library resolution code has
+      been written and is available from PADL Software. It supports C
+      libraries on GNU, BSD, AIX, and Solaris operating systems. PADL
+      have also made available a set of scripts for migrating flat files
+      into a form suitable for loading into an LDAP server. Another
+         open source implementation of the C library code is available from
+         the OpenLDAP Project.</t>
+    </section>
+    <section anchor="security" title="Security Considerations">
+      <t>The entirety of related security considerations are outside the
+      scope of this document.  It is noted that making passwords
+      encrypted with a widely understood hash function (such as crypt())
+      available to non-privileged users is dangerous because it exposes
+      them to dictionary and brute-force attacks.  This is proposed only
+      for compatibility with existing UNIX system implementations. Sites
+      where security is critical SHOULD consider using a strong 
+      authentication service for user authentication.</t>
+      <t>Alternatively, the encrypted password could be made available only
+      to a subset of privileged DUAs, which would provide "shadow" password
+      service to client applications. This may be difficult to enforce.</t>
+      <t>Because the schema represents operating system-level entities,
+      access to these entities SHOULD be granted on a discretionary
+      basis. (There is little point in restricting access to data which
+      will be republished without restriction, however.) It is particularly
+      important that only administrators can modify entries defined in this
+      schema, with the exception of allowing a principal to change their
+      password (which MAY be done on behalf of the user by a client bound
+      as a superior principal, such that password restrictions MAY be
+      enforced). For example, if a user were allowed to change the value of
+      their uidNumber attribute, they could subvert security by
+      equivalencing their account with the superuser account.</t>
+      <t>A subtree of the DIT which is to be republished by a DUA (such as a
+      NIS gateway) SHOULD be within the same administrative domain that
+      the republishing DUA represents. (For example, principals outside
+      an organization, while conceivably part of the DIT, should not be
+      considered with the same degree of authority as those within the
+      organization.)</t>
+      <t>Finally, care should be exercised with integer attributes of a 
+      sensitive nature (particularly the uidNumber and gidNumber attributes)
+      which contain zero-length values. DUAs MAY treat such values as
+      corresponding to the "nobody" or "nogroup" user and group, 
+      respectively.</t>
+    </section>
+    <section anchor="acks" title="Acknowledgements">
+      <t> Thanks to Bob Joslin of the Hewlett Packard Company, and to all
+     those that helped with this document's predecessor, RFC 2307.</t>
+      <t> UNIX is a registered trademark of The Open Group.</t>
+    </section>
+  </middle>
+  <back>
+    <references>
+         &rfc1034;
+         &rfc1057;
+         &rfc1279;
+         &rfc2373;
+         &rfc2119;
+         &rfc4511;
+         &rfc4515;
+         &rfc4519;
+         &rfc3112;
+         &ppolicy;
+      <reference anchor="ROSE">
+        <front>
+          <title>
+            The Little Black Book: Mail Bonding with OSI Directory Services
+          </title>
+          <author initials="M. T." surname="Rose">
+            <organization abbrev="Prentice-Hall">
+              Prentice-Hall, Inc
+            </organization>
+          </author>
+          <date month="" year="2001"/>
+        </front>
+        <seriesInfo name="ISBN" value="0-13-683210-5"/>
+      </reference>
+      <reference anchor="X.500">
+        <front>
+          <title>
+            Information Processing Systems - Open Systems Interconnection -
+            The Directory: Overview of Concepts, Models and Service
+          </title>
+          <author>
+            <organization>
+              ISO/IEC JTC 1/SC21
+            </organization>
+          </author>
+          <date month="" year="1988"/>
+        </front>
+      </reference>  
+      <reference anchor="UNIX">
+        <front>
+          <title>
+            IEEE Std 1003.1, 2004 Edition, Single UNIX Specification Version 3
+          </title>
+          <author>
+            <organization>
+              Institute of Electrical and Electronics Engineers
+            </organization>
+          </author>
+          <author>
+            <organization>
+              The Open Group
+            </organization>
+          </author>
+          <date month="" year="2004" />
+        </front>
+      <seriesInfo name="IEEE" value="Standard 1003.1" />
+      </reference>
+         <reference anchor="PAM">
+           <front>
+                 <title>
+                 Unified Login with Pluggable Authentication Modules (PAM)
+                 </title>
+                 <author initials="V." surname="Samar" fullname="Vipin Samar">
+                 <organization>SunSoft, Inc.</organization>
+                 </author>
+                 <author initials="R.J." surname="Schemers"
+                       fullname="Roland J. Schemers III">
+                       <organization>SunSoft, Inc.</organization>
+                 </author>
+                 <date month="October" year="1995"/>
+               </front>
+               <seriesInfo name="OSF RFC" value="86.0"/>
+               <format type="TXT" octets="67952"
+                       target="http://www.opengroup.org/rfc/mirror-rfc/rfc86.0.txt"/>
+               <format type="HTML" octets="59468"
+                   target="http://www.opengroup.org/rfc/rfc86.0.html" />
+         </reference>
+    </references>
+    <section anchor="appendixa" title="Example Entries">
+      <t>The examples described in this section are provided to illustrate
+      the schema described in this draft. They are not meant to be
+      exhaustive.</t>
+      <t>The following entry is an example of the posixAccount class:
+      <figure>
+        <artwork>
+    dn: uid=lester,ou=people,dc=aja,dc=com
+    objectClass: top
+    objectClass: account
+    objectClass: posixAccount
+    uid: lester
+    cn: Lester the Nightfly
+    gecos: Lester
+    uidNumber: 10
+    gidNumber: 10
+    loginShell: /bin/csh
+    userPassword: {crypt}$X5/DBrWPOQQaI
+    homeDirectory: /home/lester
+        </artwork>
+      </figure>
+      This corresponds to the UNIX system password file entry:
+      <figure>
+        <artwork>
+    lester:X5/DBrWPOQQaI:10:10:Lester:/home/lester:/bin/sh
+        </artwork>
+      </figure>
+      The following entry is an example of the ipHost class:
+      <figure>
+        <artwork>
+    dn: cn=josie.aja.com,ou=hosts,dc=aja,dc=com
+    objectClass: top
+    objectClass: device
+    objectClass: ipHost
+    objectClass: bootableDevice
+    objectClass: ieee802Device
+    cn: josie.aja.com
+    cn: www.aja.com
+    ipHostNumber: 10.0.0.1
+    macAddress: 00:00:92:90:ee:e2
+    bootFile: mach
+    bootParameter: root=dan.aja.com:/nfsroot/peg
+    bootParameter: swap=dan.aja.com:/nfsswap/peg
+    bootParameter: dump=dan.aja.com:/nfsdump/peg
+        </artwork>
+      </figure>
+      This entry represents the host canonically josie.aja.com, also
+      known as www.aja.com. The Ethernet address and four boot parameters
+      are also specified.</t>
+      <t>An example of the nisNetgroup class:
+      <figure>
+        <artwork>
+    dn: cn=nightfly,ou=netgroup,dc=aja,dc=com
+    objectClass: top
+    objectClass: nisNetgroup
+    cn: nightfly
+    nisNetgroupTriple: (charlemagne,peg,dunes.aja.com)
+    nisNetgroupTriple: (lester,-,)
+    memberNisNetgroup: kamakiriad
+        </artwork>
+      </figure>
+        This entry represents the netgroup nightfly, which contains two
+        triples (the user charlemagne, the host peg, and the domain
+        dunes.aja.com; and, the user lester, no host, and any domain) and
+        one netgroup (kamakiriad).</t>
+        <t>Finally, an example of the nisObject class:
+      <figure>
+        <artwork>
+    dn: nisMapName=tracks,dc=dunes,dc=aja,dc=com
+    objectClass: top
+    objectClass: nisMap
+    nisMapName: tracks
+
+    dn: cn=Maxine,nisMapName=tracks,dc=dunes,dc=aja,dc=com
+    objectClass: top
+    objectClass: nisObject
+    cn: Maxine
+    nisMapName: tracks
+    nisMapEntry: Nightfly$4
+        </artwork>
+      </figure>
+      This represents the NIS map tracks, and a single map entry.</t>
+    </section>
+    <section anchor="appendixb" title="Affected Library Functions">
+      <t>The following functions are typically found in the C libraries of
+      most <xref target="UNIX">UNIX and POSIX compliant systems</xref>.
+      An <xref target="RFC4515"> LDAP search filter string</xref> which
+      may be used to satisfy the function call is included alongside each
+      function name. Parameters are denoted by %s and %d for string and
+      integer arguments, respectively. Long lines are broken:
+      <figure>
+        <artwork>
+    getpwnam()         (&amp;(objectClass=posixAccount)(uid=%s))
+    getpwuid()         (&amp;(objectClass=posixAccount)(uidNumber=%d))
+    getpwent()         (objectClass=posixAccount)
+    getspnam()         (&amp;(objectClass=shadowAccount)(uid=%s))
+    getspent()         (objectClass=shadowAccount)
+    
+    getgrnam()         (&amp;(objectClass=posixGroup)(cn=%s))
+    getgrgid()         (&amp;(objectClass=posixGroup)(gidNumber=%d))
+    getgrent()         (objectClass=posixGroup)
+    
+    getservbyname()    (&amp;(objectClass=ipService)(cn=%s)
+                        (ipServiceProtocol=%s))
+    getservbyport()    (&amp;(objectClass=ipService)(ipServicePort=%d)
+                         (ipServiceProtocol=%s))
+    getservent()       (objectClass=ipService)
+    
+    getrpcbyname()     (&amp;(objectClass=oncRpc)(cn=%s))
+    getrpcbynumber()   (&amp;(objectClass=oncRpc)(oncRpcNumber=%d))
+    getrpcent()        (objectClass=oncRpc)
+    
+    getprotobyname()   (&amp;(objectClass=ipProtocol)(cn=%s))
+    getprotobynumber() (&amp;(objectClass=ipProtocol)
+                          (ipProtocolNumber=%d))
+    getprotoent()      (objectClass=ipProtocol)
+    
+    gethostbyname()    (&amp;(objectClass=ipHost)(cn=%s))
+    gethostbyaddr()    (&amp;(objectClass=ipHost)(ipHostNumber=%s))
+    gethostent()       (objectClass=ipHost)
+    
+    getnetbyname()     (&amp;(objectClass=ipNetwork)(cn=%s))
+    getnetbyaddr()     (&amp;(objectClass=ipNetwork)(ipNetworkNumber=%s))
+    getnetent()        (objectClass=ipNetwork)
+    
+    setnetgrent()      (&amp;(objectClass=nisNetgroup)(cn=%s))
+    getpublickey()     (&amp;(objectClass=nisKeyObject)(...))
+        </artwork>
+      </figure></t>
+    </section>
+    <section anchor="appendixc" title="Suggested DIT structure">
+      <t>The cn attribute is typically used to name entities. The 
+      ipHostNumber, ipNetworkNumber, and ipServiceProtocol attributes are also
+      naming attributes, such that multi-valued RDNs may be used to
+      distinguish between, for example, different interfaces of a multihomed
+      host.</t>
+      <t>The following DIT structure MAY be used for deploying this schema.
+      It is not required that DC-naming be used, but it is encouraged:
+      <figure>
+        <artwork>
+    Naming context                        ObjectClass
+    ============================================================
+    ou=people,dc=...                      posixAccount
+                                          shadowAcount
+    ou=group,dc=...                       posixGroup
+    ou=services,dc=...                    ipService
+    ou=protocols,dc=...                   ipProtocol
+    ou=rpc,dc=...                         oncRpc
+    ou=hosts,dc=...                       ipHost
+    ou=ethers,dc=...                      ieee802Device
+                                          bootableDevice
+    ou=networks,dc=...                    ipNetwork
+    ou=netgroup,dc=...                    nisNetgroup
+    nisMapName=...,dc=...                 nisObject
+    automountMapName=...,dc=...           automountMap
+        </artwork>
+      </figure></t>
+    </section>
+  </back>
+</rfc>