Solaris のシステム管理 (ネーミングとディレクトリサービス : FNS、NIS+ 編)

構成情報を LDAP に格納する

NIS+ および LDAP の構成情報は、構成ファイルとコマンド行で格納できますが、構成属性は LDAP にも格納できます。構成情報が多くの NIS+ サーバーによって共有され、定期的に変更される場合は、LDAP に格納すると便利です。

構成属性を LDAP に格納するには、LDAP サーバーのマニュアルを参照して、次の新しい属性とオブジェクトクラスを作成します。構成情報は、 rpc.nisd コマンド行または /etc/default/rpc.nisd nisplusLDAPconfigDN 値に指定された場所に存在することが前提となっています。また、cnnisplusLDAPbaseDomain 値であることも前提です (LDAP から構成情報を読み込む前に、rpc.nisd デーモンに認識されているため)。

LDIF データは、ldapadd(1) に適用できます。属性とオブジェクトクラス OID は、例として挙げています。

defaultSearchBasepreferredServerList 、およびauthenticationMethod 属性は、「DUA config」スキーマの原案に準拠しています。このスキーマは、IETF 標準となる見込みです。NIS+LDAPmapping(4) で使用する場合は、次の定義で十分です。


dn: cn=schema
changetype: modify
add: attributetypes
attributetypes:	( 1.3.6.1.4.1.11.1.3.1.1.1 NAME 'defaultSearchBase' ¥
		  DESC 'Default LDAP base DN used by a DUA' ¥
		  EQUALITY distinguishedNameMatch ¥
		  SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 SINGLE-VALUE )
attributetypes:	( 1.3.6.1.4.1.11.1.3.1.1.2 NAME 'preferredServerList' ¥
		  DESC 'Preferred LDAP server host addresses to be used by a DUA' ¥
		  EQUALITY caseIgnoreMatch ¥
		  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )
attributetypes:	( 1.3.6.1.4.1.11.1.3.1.1.6 NAME 'authenticationMethod' ¥
		  DESC 'Identifies the authentication method used to connect to the DSA'¥
		  EQUALITY caseIgnoreMatch ¥
		  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE )

NIS+ および LDAP の構成属性は、次のようになっています。


dn: cn=schema
changetype: modify
add: attributetypes
attributetypes:	( 1.3.6.1.4.1.42.2.27.5.42.42.18.0 ¥
		  NAME 'nisplusLDAPTLS' ¥
		  DESC 'Transport Layer Security' ¥
		  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.18.1 ¥
		  NAME 'nisplusLDAPTLSCertificateDBPath' ¥
		  DESC 'Certificate file' ¥
		  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.18.2 ¥
		  NAME 'nisplusLDAPproxyUser' ¥
		  DESC 'Proxy user for data store/retrieval' ¥
		  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.18.3 ¥
		  NAME 'nisplusLDAPproxyPassword' ¥
		  DESC 'Password/key/shared secret for proxy user' ¥
		  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.18.4 ¥
		  NAME 'nisplusLDAPinitialUpdateAction' ¥
		  DESC 'Type of initial update' ¥
		  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.18.5 ¥
		  NAME 'nisplusLDAPinitialUpdateOnly' ¥
		  DESC 'Exit after update ?' ¥
		  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.18.6 ¥
		  NAME 'nisplusLDAPretrieveErrorAction' ¥
		  DESC 'Action following an LDAP search error' ¥
		  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.18.7 ¥
		  NAME 'nisplusLDAPretrieveErrorAttempts' ¥
		  DESC 'Number of times to retry an LDAP search' ¥
		  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.18.8 ¥
		  NAME 'nisplusLDAPretrieveErrorTimeout' ¥
		  DESC 'Timeout between each search attempt' ¥
		  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.18.9 ¥
		  NAME 'nisplusLDAPstoreErrorAction' ¥
		  DESC 'Action following an LDAP store error' ¥
		  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.18.10 ¥
		  NAME 'nisplusLDAPstoreErrorAttempts' ¥
		  DESC 'Number of times to retry an LDAP store' ¥
		  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.18.11 ¥
		  NAME 'nisplusLDAPstoreErrorTimeout' ¥
		  DESC 'Timeout between each store attempt' ¥
		  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.18.12 ¥
		  NAME 'nisplusLDAPrefreshErrorAction' ¥
		  DESC 'Action when refresh of NIS+ data from LDAP fails' ¥
		  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.18.13 ¥
		  NAME 'nisplusLDAPrefreshErrorAttempts' ¥
		  DESC 'Number of times to retry an LDAP refresh' ¥
		  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.18.14 ¥
		  NAME 'nisplusLDAPrefreshErrorTimeout' ¥
		  DESC 'Timeout between each refresh attempt' ¥
		  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.18.15 ¥
		  NAME 'nisplusNumberOfServiceThreads' ¥
		  DESC 'Max number of RPC service threads' ¥
		  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.18.16 ¥
		  NAME 'nisplusThreadCreationErrorAction' ¥
		  DESC 'Action when a non-RPC-service thread creation fails' ¥
		  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.18.17 ¥
		  NAME 'nisplusThreadCreationErrorAttempts' ¥
		  DESC 'Number of times to retry thread creation' ¥
		  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.18.18 ¥
		  NAME 'nisplusThreadCreationErrorTimeout' ¥
		  DESC 'Timeout between each thread creation attempt' ¥
		  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.18.19 ¥
		  NAME 'nisplusDumpErrorAction' ¥
		  DESC 'Action when an NIS+ dump fails' ¥
		  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.18.20 ¥
		  NAME 'nisplusDumpErrorAttempts' ¥
		  DESC 'Number of times to retry a failed dump' ¥
		  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.18.21 ¥
		  NAME 'nisplusDumpErrorTimeout' ¥
		  DESC 'Timeout between each dump attempt' ¥
		  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.18.22 ¥
		  NAME 'nisplusResyncService' ¥
		  DESC 'Service provided during a resync' ¥
		  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.18.23 ¥
		  NAME 'nisplusUpdateBatching' ¥
		  DESC 'Method for batching updates on master' ¥
		  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.18.24 ¥
		  NAME 'nisplusUpdateBatchingTimeout' ¥
		  DESC 'Minimum time to wait before pinging replicas' ¥
		  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.18.25 ¥
		  NAME 'nisplusLDAPmatchFetchAction' ¥
		  DESC 'Should pre-fetch be done ?' ¥
		  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.18.26 ¥
		  NAME 'nisplusLDAPbaseDomain' ¥
		  DESC 'Default domain name used in NIS+/LDAP mapping' ¥
		  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.18.27 ¥
		  NAME 'nisplusLDAPdatabaseIdMapping' ¥
		  DESC 'Defines a database id for an NIS+ object' ¥
		  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetypes:	( 1.3.6.1.4.1.42.2.27.5.42.42.18.28 ¥
		  NAME 'nisplusLDAPentryTtl' ¥
		  DESC 'TTL for cached objects derived from LDAP' ¥
		  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetypes:	( 1.3.6.1.4.1.42.2.27.5.42.42.18.29 ¥
		  NAME 'nisplusLDAPobjectDN' ¥
		  DESC 'Location in LDAP tree where NIS+ data is stored' ¥
		  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetypes:	( 1.3.6.1.4.1.42.2.27.5.42.42.18.30 ¥
		  NAME 'nisplusLDAPcolumnFromAttribute' ¥
		  DESC 'Rules for mapping LDAP attributes to NIS+ columns' ¥
		  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetypes:	( 1.3.6.1.4.1.42.2.27.5.42.42.18.31 ¥
		  NAME 'nisplusLDAPattributeFromColumn' ¥
		  DESC 'Rules for mapping NIS+ columns to LDAP attributes' ¥
		  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

dn: cn=schema
changetype: modify
add: objectclasses
objectclasses:	( 1.3.6.1.4.1.42.2.27.5.42.42.19.0 NAME 'nisplusLDAPconfig' ¥
		  DESC 'NIS+/LDAP mapping configuration' ¥
		  SUP top STRUCTURAL MUST ( cn ) ¥
		  MAY ( preferredServerList $ defaultSearchBase $ 
authenticationMethod $ nisplusLDAPTLS $ nisplusLDAPTLSCertificateDBPath 
$ nisplusLDAPproxyUser $ nisplusLDAPproxyPassword $ nisplusLDAPinitialUpdateAction 
$ nisplusLDAPinitialUpdateOnly $ nisplusLDAPretrieveErrorAction 
$ nisplusLDAPretrieveErrorAttempts $ nisplusLDAPretrieveErrorTimeout 
$ nisplusLDAPstoreErrorAction $ nisplusLDAPstoreErrorAttempts 
$ nisplusLDAPstoreErrorTimeout $ nisplusLDAPrefreshErrorAction 
$ nisplusLDAPrefreshErrorAttempts $ nisplusLDAPrefreshErrorTimeout 
$ nisplusNumberOfServiceThreads $nisplusThreadCreationErrorAction 
$ nisplusThreadCreationErrorAttempts $ nisplusThreadCreationErrorTimeout 
$ nisplusDumpErrorAction $ nisplusDumpErrorAttempts 
$ nisplusDumpErrorTimeout $ nisplusResyncService $ nisplusUpdateBatching 
$ nisplusUpdateBatchingTimeout $ nisplusLDAPmatchFetchAction 
$ nisplusLDAPbaseDomain $ nisplusLDAPdatabaseIdMapping $ nisplusLDAPentryTtl 
$ nisplusLDAPobjectDN $ nisplusLDAPcolumnFromAttribute !
$ nisplusLDAPattributeFromColumn ) )

次の LDIF データを含むファイルを作成します。実際の検索ベースを searchBase に、完全指定ドメイン名を domain に代入します。

dn: cn=domain,searchBase

cn:domain

objectClass: top objectClass: nisplusLDAPconfig

上のファイルを ldapadd(1) の入力として使用し、NIS+ および LDAP の構成エントリを作成します。最初は、エントリは空になっています。ldapmodify(1) を使用して、構成属性を追加します。たとえば、nisplusNumberOfServiceThreads 属性に「32」を設定するには、ldapmodify(1) の入力として次のファイルを作成します。

dn: cn=domain, searchBase nisplusNumberOfServiceThreads: 32