NIS+LDAPmapping man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

NIS+LDAPmapping(4)		 File Formats		    NIS+LDAPmapping(4)

NAME
       NIS+LDAPmapping - configuration file for mapping between NIS+ and LDAP

SYNOPSIS
       /var/nis/NIS+LDAPmapping

DESCRIPTION
       The  /var/nis/NIS+LDAPmapping  configuration  file contains the mapping
       between NIS+ objects, particularly table entries, and LDAP entries  and
       attributes.  This  information can come from LDAP, from this file, from
       the rpc.nisd(1M) command line, or from a combination of all three.  The
       values  in this file supersede those obtained from the LDAP server, but
       values from the command line supersede those in the file.

       Each line in the file can be up to 8191 bytes long,  not	 counting  the
       newline.	 There	can  be	 an indefinite number of continuation lines. A
       continuation is indicated by a '\' (backslash) in  the  last  position,
       immediately  before the newline of a line. Characters are escaped, that
       is, exempted from special interpretation, when preceeded by a backslash
       character.

       The  '#' (hash) character starts a comment. White space is either ASCII
       space or a horizontal tab. In general, lines consist of optional	 white
       space,  an  attribute  name, at least one white space character, and an
       attribute value.

EXTENDED DESCRIPTION
   Getting Started
       The default rpc.nisd(4) configuration file at /etc/default/rpc.nisd and
       the  template  file at /var/nis/NIS+LDAPmapping.template are sufficient
       for the minimum NIS+ installation. The following assumptions are made:

	   1.	  The NIS+ standard directories, tables, and groups created by
		  nissetup(1M) or nisserver(1M) should be mapped. However, the
		  timezone.org_dir and client_info.org_dir tables  should  not
		  be mapped.

	   2.	  The  NIS+  objects  for  which  the rpc.nisd is a master are
		  mapped both to and from LDAP.

	   3.	  Those NIS+ objects for which the rpc.nisd is a  replica  are
		  mapped from LDAP.

	   4.	  The  LDAP server is running on the local machine, and it can
		  be reached at port 389 on the 127.0.0.1 IP address.

	   5.	  The authentication method is none,  meaning  that  all  LDAP
		  calls,  whether for reading or writing, are unauthenticated.
		  There is no transport layer security.

	   6.	  The default values for TTLs and LDAP container locations and
		  object classes are valid.

	   7.	  The  LDAP  server  supports RFC 2307bis. You want to use the
		  RFC 2307bis object classes and attributes. See

	   8.	  The  nisplusObject  attribute,  the	nisplusObjectContainer
		  object  class,  and  the ou=nisPlus container have been cre‐
		  ated.

	   9.	  You do not need to store  or	retrieve  table	 entry	owner,
		  group	 owner, entry access rights, or entry object TTL in or
		  from LDAP. For more information on these pseudo-columns, see
		  the discussion of zo_owner, and the like, in the description
		  of the nisplusLDAPcolumnFromAttribute attribute.

	   10.	  NIS+	principal  names  and  RPC  netnames  (the  cname  and
		  auth_name  columns, respectively, in the cred.org_dir table)
		  should be derived from the owner  of	the  cred  table.  For
		  example,  if	the  owner is npadm.my.dom.ain., the cname and
		  auth_name values for entries created from LDAP data will  be
		  of the form:

		    user-or-host.my.dom.ain.

		  and

		    unix.uid-or-host@my.dom.ain

		  respectively.

       If  these  assumptions  are true, you can enable mapping by copying the
       /var/nis/NIS+LDAPmapping.template file to /var/nis/NIS+LDAPmapping  and
       restart	the  rpc.nisd. If you want to either upload NIS+ data to LDAP,
       or download LDAP data to NIS+, see the description of the  nisplusLDAP‐
       initialUpdateAction attribute on rpc.nisd(4).

       If one or more of the assumptions are false, do the following:

	   1.	  To  remove  mappings,	 identify  the database id of the NIS+
		  object that should not be mapped, then delete or comment out
		  the  nisplusLDAPdatabaseIdMapping, nisplusLDAPentryTtl, nis‐
		  plusLDAPobjectDN, nisplusLDAPattributeFromColumn,  and  nis‐
		  plusLDAPcolumnFromAttribute attributes for that database id.

		  To  add mappings, find an existing mapping for a NIS+ object
		  similar to the one you want to map, and then use  that  map‐
		  ping	as  a template to create the nisplusLDAPdatabaseIdMap‐
		  ping, nisplusLDAPentryTtl, nisplusLDAPobjectDN, nisplusLDAP‐
		  attributeFromColumn,	  and	nisplusLDAPcolumnFromAttribute
		  attributes for the new mapping. The new mapping must have  a
		  unique database id.

		  To  enable  mapping  of  the timezone or client_info tables,
		  consult your LDAP server documentation about how  to	create
		  attributes and object classes, and set up the following. The
		  following is LDIF data for ldapadd(1). Attribute and	object
		  class OIDs are examples only.

		  For client_info:

		    dn: cn=schema
		    changetype: modify
		    add: attributetypes
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.12.0 \
		      NAME 'nisplusClientInfoAttr' \
		      DESC 'NIS+ client_info table client column' \
		      SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.12.1 \
		      NAME 'nisplusClientInfoInfo' \
		      DESC 'NIS+ client_info table info column' \
		      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.12.2 \
		      NAME 'nisplusClientInfoFlags' \
		      DESC 'NIS+ client_info table flags column' \
		      SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )

		    dn: cn=schema
		    changetype: modify
		    add: objectclasses
		    objectclasses:  ( 1.3.6.1.4.1.42.2.27.5.42.42.13.0 \
		      NAME 'nisplusClientInfoData' \
		      DESC 'NIS+ client_info table data' \
		      SUP top STRUCTURAL MUST ( cn ) \
		      MAY (nisplusClientInfoAttr $ nisplusClientInfoInfo $ \
			  nisplusClientInfoFlags))

		  For  the  ou=ClientInfo  container,  substitute  your actual
		  search base for searchBase):

		    dn: ou=ClientInfo,searchBase
		    ou: ClientInfo
		    objectClass: top
		    objectClass: organizationalUnit

		  For timezone:

		    dn: cn=schema
		    changetype: modify
		    add: attributetypes
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.15.0 \
			     NAME 'nisplusTimeZone' \
			     DESC 'tzone column from NIS+ timezone table' \
			     SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )

		    dn: cn=schema
		    changetype: modify
		    add: objectclasses
		    objectclasses:  ( 1.3.6.1.4.1.42.2.27.5.42.42.16.0 \
			     NAME 'nisplusTimeZoneData' \
			     DESC 'NIS+ timezone table data' \
			     SUP top STRUCTURAL MUST ( cn ) \
			     MAY ( nisplusTimeZone $ description ) )

		  For the ou=Timezone container:

		    dn: ou=Timezone,searchBase
		    ou: Timezone
		    objectClass: top
		    objectClass: organizationalUnit

		  Uncomment  the   mapping   attributes	  for	timezone   and
		  client_info	in   the   mapping   file,   and  restart  the
		  rpc.nisd(1M) daemon.

	   2.	  To disable write mapping, edit the nisplusLDAPobjectDN value
		  for  the appropriate database id. Remove the writeObjectSpec
		  value, leaving only  the  readObjectSpec  value.  Make  sure
		  there are no trailing colons.

		  To  disable read mapping, remove the readObjectSpec, leaving
		  the database id, two colons, and the writeObjectSpec value.

	   3.	  Replicas cannot write-map objects. Remove disable read  map‐
		  ping, remove mapping entirely for the relevant database ids,
		  as described above.

	   4.	  Change the preferredServerList value to the  correct	server
		  address(es)  and port(s). If configuration data is retrieved
		  fromLDAP,  also  edit	  the	nisplusLDAPpreferredServerList
		  value.

	   5.	  Edit the authenticationMethod attribute value to the authen‐
		  tication method that you want to use. If configuration  data
		  is  retrieved from LDAP, edit the nisplusLDAPconfigAuthenti‐
		  cationMethod value. If the method  is	 anything  other  than
		  none, you will need to specify one or more of the following,
		  depending upon the method.

		  nisplusLDAPconfigProxyUser
		  nisplusLDAPproxyUser

	       The bind-DN to use for authentication.

	   nisplusLDAPconfigProxyPassword
	   nisplusLDAPproxyPassword

	       The password or key for the bind-DN and method. Make sure  that
	       the  file  containing  the  password  or	 key is protected from
	       access by unauthorized users.

	   To use transport layer security, set nisplusLDAPconfigTLS  or  nis‐
	   plusLDAPTLS	to  ssl, and set nisplusLDAPconfigTLSCertificateDBPath
	   or nisplusLDAPTLSCertificateDBPath to the file containing the  cer‐
	   tificate DB. In order to successfully use authentication and trans‐
	   port layer security, the server must also support the  chosen  val‐
	   ues.

	   6.	  To  change  the  TTLs,  edit the nisplusLDAPentryTtl for the
		  appropriate database id.

		  To change LDAP container locations or object	classes,  edit
		  the  nisplusLDAPobjectDN  value for the appropriate database
		  id.

	   7.	  To determine which object classes and	 attributes  are  sup‐
		  ported,  consult  your LDAP server documentation. If you are
		  using the iPlanet directory server,  see  idsconfig(1M)  for
		  information  to  set	up  RFC	 2307bis  object  classes  and
		  attributes.

	   8.	  Refer to your LDAP server documentation for  how  to	create
		  attributes and object classes, and set up the following:

		    dn: cn=schema
		    changetype: modify
		    add: attributetypes
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.1.0 \
			     NAME 'nisplusObject' \
			     DESC 'An opaque representation of a NIS+ object' \
			     SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 SINGLE-VALUE )

		    dn: cn=schema
		    changetype: modify
		    add: objectclasses
		    objectclasses: ( 1.3.6.1.4.1.42.2.27.5.42.42.2.0 \
			    NAME 'nisplusObjectContainer' \
			    SUP top STRUCTURAL DESC 'Abstraction of a NIS+ object' \
			    MUST ( cn $ nisplusObject ) )

		  ou=nisPlus  is a container assumed to reside at the default‐
		  SearchBase. See rpc.nisd(4). The  following  LDIF  input  to
		  ldapadd(1)  will  create  the	 ou=nisPlus container. Replace
		  dc=some,dc=domain with your actual base.

		    dn: ou=nisPlus,dc=some,dc=domain
		    ou: nisPlus
		    objectClass: top
		    objectClass: organizationalUnit

		  The nisplusObjectContainer,  nisplusObject,  and  ou=nisPlus
		  labels  are  suggestions.  If	 you  change nisplusObjectCon‐
		  tainer, or ou=nisPlus, edit  the  mapping  file  to  reflect
		  this. To change nisplusObject, for example, to myObject, add
		  nisplusObject=myObject to the filterAttrValList and attrVal‐
		  List	portions  of the readObjectSpec and writeObjectSpec of
		  the nisplusLDAPobjectDN  value  for  the  mapping.  See  the
		  description of nisplusLDAPobjectDN below.

	   9.	  Refer	 to  your  LDAP server documentation for how to create
		  attributes and object classes, and set up the following. The
		  following  is LDIF data for ldapadd(1). Attribute and object
		  class OIDs are examples only.

		    dn: cn=schema
		    changetype: modify
		    add: attributetypes
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.4.0 \
			     NAME 'nisplusEntryOwner' \
			     DESC 'Opaque representation of NIS+ entry owner' \
			     SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.4.1 \
			     NAME 'nisplusEntryGroup' \
			     DESC 'Opaque representation of NIS+ entry group' \
			     SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.4.2 \
			     NAME 'nisplusEntryAccess' \
			     DESC 'Opaque representation of NIS+ entry access' \
			     SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.4.3
			     NAME 'nisplusEntryTtl' \
			     DESC 'Opaque representation of NIS+ entry TTL' \
			     SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )

		    dn: cn=schema
		    changetype: modify
		    add: objectclasses
		    objectclasses:  ( 1.3.6.1.4.1.42.2.27.5.42.42.5.0 \
			  NAME 'nisplusEntryData' \
			  SUP top STRUCTURAL DESC 'NIS+ entry object non-column data' \
			  MUST ( cn ) MAY ( nisplusEntryOwner $ nisplusEntryGroup $ \
			  nisplusEntryAccess $ nisplusEntryTtl ) )

		  Edit the mapping file to enable storing entry owner,	group,
		  access,   and	  TTL  in  LDAP.  The  template	 mapping  file
		  /var/nis/NIS+LDAPmapping.template has commented-out sections
		  for  the passwd and cred database ids that show how this can
		  be done.

	   10.	  To  preserve	the  cname  and	 auth_name  column  data  when
		  cred.org_dir	entries are stored in NIS+, you can create the
		  nisplusPrincipalName and nisplusNetname attributes. See your
		  LDAP	server	documentation for how to create attributes and
		  object classes, and set up the following:

		    dn: cn=schema
		    changetype: modify
		    add: attributetypes
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.7.0 \
			     NAME 'nisplusPrincipalName' \
			     DESC 'NIS+ principal name' \
			     EQUALITY caseIgnoreIA5Match SINGLE-VALUE \
			     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
		    attributetypes: ( 1.3.6.1.4.1.42.2.27.5.42.42.9.0 \
			     NAME 'nisplusNetname' \
			     DESC 'Secure RPC netname' \
			     EQUALITY caseIgnoreIA5Match SINGLE-VALUE \
			     SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )

		    dn: cn=schema
		    changetype: modify
		    add: objectclasses
		    objectclasses:  ( 1.3.6.1.4.1.42.2.27.5.42.42.10.0
			    NAME 'nisplusAuthName' \
			    SUP top AUXILLIARY DESC 'NIS+ authentication identifiers' \
			    MAY ( nisplusPrincipalName $ nisplusNetname ) )

		  Edit the mapping file to use	the  new  nisplusPrincipalName
		  and  nisplusNetname.	The  template /var/nis/NIS+LDAPmapping
		  file contains commented-out sections that support  the  nis‐
		  plusPrincipalName  and  nisplusNetname  attributes.  See the
		  nisplusLDAPobjectDN, nisplusLDAPattributeFromColumn and nis‐
		  plusLDAPcolumnFromAttribute attribute values for the credlo‐
		  cal, creduser, and crednode database ids .

   Attributes for Data Mapping
       The following attributes are recognized. Any values specified for these
       attributes  in  the  file,  including  an  empty value, override values
       obtained from LDAP.

       There are several attributes that can have  multiple  values,  one  for
       each  database  id.  Depending  on  the source, the multiple values are
       specified in the following ways:

       LDAP	  Multi-valued attributes, where each value corresponds to one
		  database id.

       File	  One  line,  which may be continued, for each value (database
		  id). The line starts with the name of the attribute

       Command	   -x option for each value (database id).

       Unless otherwise noted, all elements of the syntaxes below may be  sur‐
       rounded	by  white  space. Separator characters and white space must be
       escaped if they are part of syntactic elements.

       nisplusLDAPdatabaseIdMapping

	   Maps a database id to a NIS+ object. If  the	 object	 name  is  not
	   fully  qualified,  that  is,	 it  does  not	end in a dot, the nis‐
	   plusLDAPbaseDomain  is  appended.  See  rpc.nisd(4).	 There	is  no
	   default value. The syntax of the value is:

	     databaseId ":" objectspec

	   where

	   databaseId	 Label	identifying a subset of a NIS+ object for map‐
			 ping purposes.

	   objectspec	 objectname | "[" indexlist "]" tablename

	   objectname	 The name of a NIS+ object (including tables)

	   tablename	 The name of a NIS+ table

	   indexlist	 colspec ["," colspec]

	   colspec	 colname "=" colvalue

	   colname	 The name of a column in the table

	   colvalue	 colvaluestring | \" colvaluestring \"

	   The [indexlist]tablename form is intended for those cases where  it
	   is  necessary  to  select  a subset of a NIS+ table. The subset are
	   those NIS+ entries that match the indexlist. If there are  multiple
	   indexed  specifications for a particular NIS+ table, they are tried
	   in the order retrieved until one matches. Note that retrieval order
	   usually  is unspecified for multi-valued LDAP attributes. Hence, if
	   using indexed specifications when  nisplusLDAPdatabaseIdMapping  is
	   retrieved  from  LDAP, make sure that the subset match is unambigu‐
	   ous.

	   If the colvaluestring contains  white  space	 or  commas,  it  must
	   either  be  surrounded  by double quotes, or the special characters
	   must be escaped.Wildcards are allowed in the colvaluestring. If the
	   objectname  or  tablename  is not fully qualified, the nisplusLDAP‐
	   baseDomain value is appended. If the objectname is empty the	 value
	   of nisplusLDAPbaseDomain is substituted.

	   The following example shows how to associate the passwd database id
	   with the passwd.org_dir table:

	     passwd:passwd.org_dir

	   The following example shows how to associate the LOCAL  entries  in
	   the cred.org_dir table with the credlocal database id:

	     credlocal:[auth_type=LOCAL]cred.org_dir

	   The following example shows how to use the creduser database id for
	   those entries in the cred.org_dir table that represent  credentials
	   (keys)  for	users. That is, they have a netname (auth_name) of the
	   type unix.<numeric-id>@domain.

	     creduser:[auth_type="D*",auth_name="unix.[0-9]*"]cred.org_dir

       nisplusLDAPentryTtl

	   Establish TTLs for NIS+ entries derived from LDAP.  The  syntax  of
	   the value is:

	     databaseId ":" initialTTLlo ":" initialTTLhi ":" runningTTL

	   initialTTLlo	   The	lower  limit  for the initial TTL (in seconds)
			   for data read from disk when the  rpc.nisd  starts,
			   or  from  LDAP  during  an  initial	down-load. See
			   rpc.nisd(4) for the description of the nisplusLDAP‐
			   initialUpdate  attribute.  If  initialTTLhi also is
			   specified, the actual initialTTL will  be  randomly
			   selected  from  the	interval  initialTTLlo to ini‐
			   tialTTLhi, inclusive. If the field is  left	empty,
			   it yields the default value of 1800 seconds.

	   initialTTLhi	   The upper limit for the initial TTL. If left empty,
			   it defaults to 5400.

	   runningTTL	   The TTL (in seconds) for data retrieved  from  LDAP
			   while  the  rpc.nisd	 is  running.  Leave the field
			   empty to obtain the default value of 3600 seconds.

	   If there is no specification of TTLs for a  particular  databaseId,
	   the	default	 values are used. If the initialTTLlo and initialTTLhi
	   have the same value, the effect will be that all data known to  the
	   rpc.nisd  at	 startup times out at the same time. Depending on NIS+
	   data lookup patterns, this could cause spikes  in  rpc.nisd-to-LDAP
	   traffic.  In	 order	to  avoid that, you can specify different ini‐
	   tialTTLlo and initialTTLhi values and obtain a  spread  in  initial
	   TTLs.  The  NIS+  object TTL is a separate and distinct entity used
	   for other purposes, notably the TTL of NIS+	directory  objects  in
	   the	shared	directory cache managed by the nis_cachemgr(1M). There
	   is no connection between the	 nisplusLDAPentryTtl  and  object  TTL
	   values for a NIS+ object.

	   The following example shows how to specify that entries in the NIS+
	   hosts table read from LDAP should be valid for four hours. When the
	   rpc.nisd  restarts, the disk database entries are valid for between
	   two and three hours.

	     hosts:7200:10800:14400

       nisplusLDAPobjectDN

	   Specifies the connection between a databaseId and the  LDAP	direc‐
	   tory. The syntax of the value is:

	     databaseId ":" objectDN *( ";" objectDN )

	   objectDN		readObjectSpec [":"[writeObjectSpec]]

	   readObjectSpec	[baseAndScope [filterAttrValList]]

	   writeObjectSpec	[baseAndScope [attrValList [":" deleteDisp]]]

	   baseAndScope		[baseDN] ["?" [scope]]

	   filterAttrValList	["?" [filter | attrValList]]

	   scope		"base" | "one" | "sub"

	   attrValList		attribute "=" value *("," attribute "=" value)

	   deleteDisp		"always" | perDbId | "never"

	   perDbId		"dbid" "=" delDatabaseId

	   delDatabaseId	database  id  per nisplusLDAPdatabaseIdMapping
				above.

	   The	baseDN	defaults  to  the  value  of   the   defaultSearchBase
	   attribute.  If the baseDN ends in a comma, the defaultSearchBase is
	   appended.

	   scope defaults to one. It has  no  meaning  and  is	ignored	 in  a
	   writeObjectSpec.  The  filter is an LDAP search filter. There is no
	   default value. The attrValList is a list  of	 attribute  and	 value
	   pairs.  There is no default value. As a convenience, if an attrVal‐
	   List is specified in a readObjectSpec, it is converted to a	search
	   filter  by  ANDing together the attributes and values. For example,
	   the attribute and value list:

	     objectClass=posixAccount,objectClass=shadowAccount

	   is converted to the filter:

	     (&(objectClass=posixAccount)(objectClass=shadowAccount))

	   Entry objects are mapped by means of	 the  relevant	table  mapping
	   rules  in the nisplusLDAPattributeFromColumn and nisplusLDAPcolumn‐
	   FromAttribute attributes. Entry objects do not have	explicit  nis‐
	   plusLDAPobjectDN attributes.

	   If  a  writeObjectSpec  is omitted, and there is no trailing colon,
	   the effect is to not attempt writes at all. If there is a  trailing
	   colon after the readObjectSpec, it is implied that the writeObject‐
	   Spec is the same as the readObjectSpec.

	   Note that writes only are attempted by  a  master  server  for  the
	   mapped NIS+ object. Replicas silently ignore any writeObjectSpec:s.

	   The	deleteDisp  specifies  how  NIS+  object  deletion  should  be
	   reflected in LDAP. The following values are recognized:

	   always		 Always attempt to remove the LDAP entry. This
				 is the default.

	   dbid=delDatabaseId	 Set the mapped entries to values specified by
				 the nisplusLDAPattributeFromColumn  attribute
				 values	 for  delDatabaseId.  This  only makes
				 sense for the databaseId:s  corresponding  to
				 NIS+  tables  or subsets of tables. For other
				 NIS+ objects,	if  dbid=  is  specified,  the
				 action	 will be always. In the delDatabaseId,
				 deletion  of  individual  attributes  can  be
				 specified  by	leaving	 the RHS of the = in a
				 mapping rule empty.  The  delDatabaseId  rule
				 set  should  specify  a  dn.  Otherwise,  the
				 rpc.nisd might try to derive a dn by perform‐
				 ing an LDAP lookup on the attributes and val‐
				 ues from the rule set,	 quite	possibly  with
				 unexpected results.

	   never		 Upon  NIS+ object deletion, the corresponding
				 LDAP data is  left  unchanged.	 If  the  NIS+
				 object	 is an entry, this means that the only
				 effect of  the	 deletion  is  to  temporarily
				 remove it from the rpc.nisd's cache.

	   The following is an example of how to get the ipnodes table entries
	   from the ou=Hosts container under  the  default  search  base,  and
	   write to the same place.

	     ipnodes:ou=Hosts,?one?objectClass=ipHost:

	   The	following example shows how to obtain the passwd table entries
	   from the ou=People containers under the default  search  base,  and
	   also	 from  dc=another,dc=domain.  The  latter is an example of the
	   equivalent of and replacement for a NIS+ table path. Writes	should
	   only	 be  attempted to the first objectDN. NIS+ entry deletions for
	   the first objectDN are not reflected in LDAP:

	     passwd:ou=People,?one?objectClass=shadowAccount,\
			    objectClass=posixAccount::never;\
		    ou=People,dc=another,dc=domain,?one?\
			    objectClass=shadowAccount,\
			    objectClass=posixAccount

	   The following example shows how to obtain the passwd table  entries
	   from	 the  ou=People	 container under the default search base. Upon
	   NIS+ entry deletion, update the LDAP entry  per  the	 passwd_delete
	   database id:

	     passwd:ou=People,?one?objectClass=shadowAccount,\
			    objectClass=posixAccount::\
		    dbid=passwd_delete

	   where nisplusLDAPattributeFromColumn for passwd_delete could be:

	     passwd_delete:\
		    dn=("uid=%s,", name), \
		    uid=name, \
		    userPassword=("*NP*"), \
		    uidNumber=uid, \
		    gidNumber=gid, \
		    gecos=("INVALID: %s", gcos), \
		    homeDirectory=home, \
		    loginShell=("/bin/false"), \
		    (shadowLastChange,shadowMin,shadowMax, \
		     shadowWarning, shadowInactive,shadowExpire, \
		     shadowFlag)=(shadow, ":"), \
		    nisplusEntryOwner=zo_owner, \
		    nisplusEntryGroup=zo_group, \
		    nisplusEntryAccess=zo_access

       nisplusLDAPcolumnFromAttribute

	    Specifies  how  a NIS+ table and column value is derived from LDAP
	   attribute values. The syntax is:

	     databaseId ":" colattrspec *("," colattrspec)

	   The format of colattrspec is shown below in the discussion  of  the
	   column and attribute conversion syntax.

	   The	following  is  an  example  of	how  to map by direct copy and
	   assignment the value of the ipHostNumber attribute to the addr col‐
	   umn:

	     addr=ipHostNumber

	   Formats  for	 the  column  and attribute conversion syntax are dis‐
	   cussed below, including examples of	complex	 attribute  to	column
	   conversions..

	   There  are  four  special  pseudo-columns that are used to indicate
	   non-column entry object data:

	   zo_owner	The NIS+ principal that	 owns  the  entry  object.  By
			default,  the zo_owner value is inherited from the ta‐
			ble.

	   zo_group	The NIS+ group owner of the entry object. By  default,
			the zo_group value is inherited from the table.

	   zo_access	The  NIS+  access  rights  to  the entry. Table column
			rights are  stored  in	the  table.  By	 default,  the
			zo_access value is inherited from the table.

	   zo_ttl	The  NIS+  TTL	for the entry. This is not the TTL for
			the entry when cached by the rpc.nisd. By default, the
			zo_ttl value is inherited from the table.

	   The default /var/nis/NIS+LDAPmapping.template assumes the existence
	   of the following corresponding LDAP attributes  in  the  containers
	   for the passwd and cred tables:
	     nisplusEntryOwner
	     nisplusEntryGroup
	     nisplusEntryAccess
	     nisplusEntryTtl
	   These  attributes are not part of any schema specified in an RFC or
	   similar document. They must be created if they are to be used. They
	   are	assumed to belong to the as nisplusEntryData object class, and
	   they contain a single string value. The format of  this  string  is
	   private, and subject to change without notice.

	   For	most  tables,  the non-column entry data can be inherited from
	   the	containing  table,  and	 the  pseudo-columns  should  be  left
	   unmapped.  Notable  exceptions  are	the passwd and cred tables, if
	   individual users have access to modify their own  passwd  and  cred
	   entries.  This would usually be the case if the site is not running
	   the rpc.nispasswdd(1M) daemon.

       nisplusLDAPattributeFromColumn

	   Specifies how an LDAP attribute value is derived  from  NIS+	 table
	   and column values. The syntax is:

	     databaseId ":" colattrspec *("," colattrspec )

	   The	format	of colattrspec is shown below in the discussion of the
	   column and attribute conversion syntax.

	   As a special case, if the dn attribute value derived from a	colat‐
	   trspec  ends	 in a comma (','), the baseDN from the writeObjectSpec
	   is appended.

	   The following is an example of how to map the  value	 of  the  addr
	   column to the ipHostNumber attribute by direct copy and assignment:

	     ipHostNumber=addr

	   All	relevant attributes, including the dn, must be specified. Non-
	   column entry object data can be mapped as noted under  the  discus‐
	   sion of nisplusLDAPcolumnFromAttribute above.

   Column and Attribute Conversion Syntax
       The general format of a colattrspec is:

	 colattrspec	 = lhs "=" rhs
	 lhs		 = lval | namespeclist
	 rhs		 = rval | [namespec]
	 namespeclist	 = namespec | "(" namespec *("," namespec) ")"

       The  lval  and rval syntax are defined below at . The format of a name‐
       spec is:

       namespec	       ["ldap:"] attrspec [searchTriple] |  ["nis+:"]  colspec
		       [objectspec]

       colspec	       column | "(" column ")"

       attrspec	       attribute | "(" attribute ")"

       searchTriple    ":" [baseDN] ["?" [scope] ["?" [filter]]]

       baseDN	       Base DN for search

       filter	       LDAP search filter

       objectspec      objectspec per nisplusLDAPdatabaseIdMapping

       The repository specification in a namespec defaults as follows:

	   o	  For  assignments to a column, nis+: on the LHS, ldap: on the
		  RHS. NIS+ column values on the  RHS  are  those  that	 exist
		  before the NIS+ entry is modified.

	   o	  For  assignments to an attribute, ldap: on the LHS, nis+: on
		  the RHS. LDAP attribute values on the	 RHS  are  those  that
		  exist before the LDAP entry is modified.

       Enclosing the column or attribute name in parenthesis denotes a list of
       column or attribute values. For attributes, the meaning is the list  of
       all attributes of that name, and the interpretation depends on the con‐
       text. See the discussion at . This list specification is ignored when a
       searchTriple or objectspec is supplied.

       For  columns,  the  (colname)  syntax is used to map multiple attribute
       instances to multiple NIS+ entries.

       The searchTriple can be used to specify an attribute  from  a  location
       other than the read or write target. The defaults are as follows:

       baseDN	 If  omitted,  the  default  is	 the  current objectDN. If the
		 baseDN ends in a comma, the value  of	the  defaultSearchBase
		 attribute is appended.

       scope	 one

       filter	 Empty

       Similarly,  the objectspec can be used to specify a column value from a
       NIS+ table other than the one implicitly indicated by  the  databaseId.
       If  searchTriple	 or  objectspec is explicitly specified in a namespec,
       the retrieval or assignment, whether from or to LDAP or NIS+,  is  per‐
       formed without checking if read and write are enabled for the LDAP con‐
       tainer or NIS+ table.

       Omitting the namespec in an rhs is only allowed if the lhs  is  one  or
       more attributes. The effect is to delete the specified attribute(s). In
       all other situations, an	 omitted  namespec  means  that	 the  rule  is
       ignored.

       The  filter can be a value. See . For example, to find the ipHostNumber
       using the cn, you could specify the following in the filter field:

	 ldap:ipHostNumber:?one?("cn=%s", (cname, "%s.*"))

       In order to remove ambiguity, the unmodified value of a	single	column
       or attribute must be specified as the following when used in the filter
       field.

	 ("%s", namespec)

       If the filter is not specified, the scope will be base, and the	baseDN
       is  assumed to be the DN of the entry that contains the attribute to be
       retrieved or modified. To use previously existing column	 or  attribute
       values  in  the	mapping	 rules requires a lookup to find those values.
       Obviously, this will add to the time required to perform the  modifica‐
       tion.  Also,  there  is	a  window  between  the	 time  when a value is
       retrieved, and then slightly later, stored back.	 If  the  values  have
       changed in the mean time, the change may be overwritten.

       When  colattrspecs  are	grouped into rule sets, in the value of a nis‐
       plusLDAPcolumnFromAttribute	or	nisplusLDAPattributeFromColumn
       attribute,  the	evaluation  of	the colattrspecs proceed in the listed
       order. However, evaluation may be done in parallel for multiple	colat‐
       trspecs.	 If  there  is an error when evaluating a certain colattrspec,
       including retrieval or assignment of entry or column values, the extent
       to which the other colattrspec rules are evaluated is unspecified

   Wildcards
       Where  wildcard	support	 is  available, it is of the following limited
       form:

       *	Matches any number of characters.

       [x]	Matches the character x.

       [x-y]	Matches any character in the range x to y, inclusive..

       Combinations such as [a-cA-C0123] are also allowed.This	example	 would
       match any one of a, b, c, A, B, C, 0, 1, 2, or 3.

   Substring Extraction
	 substringextract = "(" namespec "," matchspec ")"
	 name		  = column or attribute name
	 matchspec	  =

       The  matchspec  is  a  string like the sscanf(3C) format string, except
       that there may be at most one format specifier, a single %s.  The  out‐
       put  value  of the substringextract is the substring matching the loca‐
       tion of the %s.

       If there is no %s in the formatstring, it  must	instead	 be  a	single
       character,  which  is assumed to be a field separator for the namespec.
       The output values are the field values. Wild cards  are	supported.  If
       there is no match, the output value is the empty string, "".

       For  example, if the column cname has the value user.some.domain.name.,
       the value of the expression:

	 (cname, "%s.*")

       is user, which can be used to extract the user name from a NIS+ princi‐
       pal name.

       Similarly,  use this expression to extract the third of the colon-sepa‐
       rated fields of the shadow column:

	 (shadow, "*:*:%s:*")

       This form can be used to extract all of the shadow fields.  However,  a
       simpler way to specify that special case is:

	 (shadow, ":")

   Values
	 lval		= "(" formatspec "," namespec *("," namespec) ")"
	 rval		= "(" formatspec ["," namelist ["," elide] ] ")"
	 namelist	= name_or_sse *( "," name_or_sse)
	 name_or_sse	= namespec | substringextract
	 formatspec	=
	 formatstring	= A string combining text and % field specifications
	 elide		=
	 singlechar	= Any character

       This  syntax  is used to produce rval values that incorporate column or
       attribute values, in a manner like sprintf(3C), or to  perform  assign‐
       ments  to  lval	like sscanf(3C). One important restriction is that the
       format specifications,% plus a single character, use  the  designations
       from  ber_printf(3LDAP).	 Thus,	while  %s  is used to extract a string
       value, %i causes BER conversion from an integer. Formats other than %s,
       for  instance,  %i,  are	 only  meaningfully  defined  in simple format
       strings without any other text.

       The following ber_printf() format characters are recognized:

	 b  i  B  n  o	s

       If there are too few  format  specifiers,  the  format  string  may  be
       repeated as needed.

       When  used  as  an lval, there is a combination of pattern matching and
       assignment, possibly to multiple columns or attributes.

       For example, in an assignment to an attribute, if the value of the addr
       column is 1.2.3.4, the rval:

	 ("ipNetworkNumber=%s,", addr)

       produces the value ipNetworkNumber=1.2.3.4,, while:

	 ("(%s,%s,%s)", host, user, domain)

       results	  in   (assuming   host="xyzzy",   user="-",   domain="x.y.z")
       "(xyzzy,-,x.y.z)". The elide character feature is used  with  attribute
       lists. For example:

	 ("%s,", (mgrprfc822mailmember), ",")

       concatenates  all  mgrprfc822mailmember values into one comma-separated
       string, and then elides the final trailing comma. Thus, for

	 mgrprfc822mailmember=usera
	 mgrprfc822mailmember=userb
	 mgrprfc822mailmember=userc

       the value would be usera,userb,userc.

       If the NIS+ column intval is in binary format, that is,	the  B	column
       flag is set, and it is to be interpreted as an integer, the following:

	 ("%i", intval)

       produces	  a   value  suitable  for  assignment	to  an	integer-valued
       attribute.

       The nisPublicKey	 attribute  encodes  the  algorithm  type  and	number
       (equivalent  to	the  auth_type	column) and the public key as a single
       string such as {dh192-0}xxxxxxxx (public key  truncated	for  clarity).
       The following will extract the corresponding  auth_type and public_data
       values:

	 ("{%s}%s", auth_type, public_data)

       As a special case, to combine an LHS extraction with  an	 RHS  implicit
       list creates multiple entries and values. For example,

	 ("(%s,%s,%s)", host, user, domain)=(nisNetgroupTriple)

       creates one NIS+ entry for each nisNetgroupTriple value.

   Assignments
       The assignment syntax, also found at , is as follows:

	 colattrspec	= lhs "=" rhs
	 lhs		= lval | namespeclist
	 rhs		= rval | namespec
	 namespeclist	= namespec | "(" namespec *("," namespec) ")"

       By using the syntax defined above, the general form of a simple assign‐
       ment, which is a one-to-one mapping of column to attribute, would be:

	 ("%s", colname)=("%s", attrname)

       As a convenient short-hand, this can also be written as:

	 colname=attrname

       A list specification, which is a name enclosed in parenthesis,  can  be
       used to make many-to-many assignments. The expression:

	 (colname)=(attrname)

       where  there are multiple instances of attrname, creates one NIS+ entry
       for each such instance, differentiated by  their	 colname  values.  The
       following  combinations of lists are allowed, but they are not particu‐
       larly useful:

       (attrname)=(colname)    Equivalent to attrname=colname

       attrname=(colname)      Equivalent to attrname=colname

       (colname)=attrname      Equivalent to colname=attrname

       colname=(attrname)      Equivalent to colname=attrname

       If a multi-valued RHS is assigned to a single-valued LHS, the LHS value
       will  be	 the first of the RHS values. If the RHS is an attribute list,
       the first attribute is the first one returned by the LDAP  server  when
       queried.	 Otherwise, the definition of "first" is implementation depen‐
       dent.

       Finally, the LHS might be an explicit list of  columns  or  attributes,
       such as:

	 (name1,name2,name3)

       If the RHS is single-valued, this assigns the RHS value to all entities
       in the list. If the RHS is multi-valued, the first value is assigned to
       the  first  entity  of the list, the second value to the second entity,
       and so on. Excess values or entities are silently ignored.

EXAMPLES
       Example 1 Assigning an Attribute Value to a Column

       The following example illustrates  how  to  assign  the	value  of  the
       ipHostNumber attribute to the addr column

	 addr=ipHostNumber

       Example	2  Creating  Multiple  NIS+  Entries  from  Multi-Valued  LDAP
       Attributes

       An LDAP entry with:

	 cn=name1
	 cn=name2
	 cn=name3

       and the following assignments:

	 cname=cn
	 (name)=(cn

       creates three NIS+ entries (other attributes/columns omitted for	 clar‐
       ity):

	 cname=name1, name=name1
	 cname=name1, name=name2
	 cname=name1, name=name3

       Example 3 Assigning String Constants

       The following expression sets the auth_type column to LOCAL:

	 auth_type=("LOCAL")

       Example 4 Splitting Column Values to Multi-Valued Attributes

       The  expansion  column  contains a comma-separated list of alias member
       names. In the following example, the expression assigns each such  mem‐
       ber name to an instance of mgrprfc822mailmember:

	 (mgrprfc822mailmember)=(expansion, ",")

       Example 5 Splitting Column Values to Multiple Attributes

       The  shadow  column contains a colon-separated list of fields. The fol‐
       lowing assigns the value of the first field  to	shadowLastChange,  the
       value of the second field to shadowMin, and so forth.

	 (shadowLastChange,shadowMin,shadowMax,shadowWarning,\
	       shadowInactive,shadowExpire,shadowFlag)=(shadow, ":")

FILES
       /var/nis/NIS+LDAPmapping

	   Default mapping file used by rpc.nisd(1M).

       /var/nis/NIS+LDAPmapping.template

	   Template file covering the standard NIS+ directories and tables.

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Availability		     │SUNWnisr			   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Interface Stability	     │Obsolete			   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       nisldapmaptest(1M),    nisserver(1M),	nissetup(1M),	 rpc.nisd(1M),
       ber_printf(3LDAP), rpc.nisd(4), attributes(5)

NOTES
       RFC 2307bis is an IETF  informational  document	in  draft  stage  that
       defines an approach for using LDAP as a naming service.

SunOS 5.10			  13 Feb 2003		    NIS+LDAPmapping(4)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net