この章では、Solaris LDAP クライアントが名前情報を検索できるように、iPlanet Directory Server を設定する方法について説明します。この章の説明は、iPlanet Directory Server バージョン 4.11 に基づいています。
iPlanet Directory Server を使用する場合は、iPlanet に関する次のマニュアルを照してください。
『Netscape Directory Server Schema Reference Guide』
『Netscape Server Deployment Manual』
『Managing Servers with Netscape Console 4.0』
『Directory Server Administrators Guide』
この章の内容は次のとおりです。
ipNetwork オブジェクトクラスを変更し、cn を必須ではなくしますが、メンバーのままにしておきます。
変更前の ipNetwork は次のとおりです。
objectclass ipNetwork oid 1.3.6.1.1.1.2.7 requires objectClass, ipNetworkNumber, cn allows ipNetmaskNumber, manager, l, description |
cn 行を requires から削除し、allows に追加します。変更後の ipNetwork は次のようになります。
objectclass ipNetwork oid 1.3.6.1.1.1.2.7 requires objectClass, ipNetworkNumber allows cn, ipNetmaskNumber, manager, l, description |
NisKeyObject オブジェクトクラスを追加します。
# NIS publickey objectclass objectclass NisKeyObject oid 1.3.6.1.1.1.2.14 superior top requires cn, nisPublickey, nisSecretkey allows uidNumber, description |
nisDomainObject オブジェクトクラスを追加します。
# NIS domain objectclass objectclass nisDomainObject oid 1.3.1.6.1.1.1.2.15 superior top requires nisDomain |
SolarisNamingProfile オブジェクトクラスを追加します。
# LDAP client profile objectclass objectclass SolarisNamingProfile oid 1.3.6.1.4.1.42.2.27.5.2.7 superior top requires cn, SolarisLDAPservers, SolarisSearchBaseDN allows SolarisBindDN, SolarisBindPassword, SolarisAuthMethod, SolarisTransportSecurity, SolarisCertificatePath, SolarisDataSearchDN, SolarisSearchScope, SolarisSearchTimelimit, SolarisPreferredServer, SolarisPreferredServerOnly, SolarisCacheTTL, SolarisSearchReferral |
mailGroup オブジェクトクラスを追加します。
# mailGroup objectclass objectclass mailGroup oid 2.16.840.1.113730.3.2.4 superior top requires mail allows cn, mgrpRFC822MailMember |
nisMailAlias オブジェクトクラスを追加します。
# nisMailAlias objectclass objectClass nisMailAlias oid 1.3.6.1.4.1.42.2.27.1.2.5 superior top requires cn allows rfc822mailMember |
nisNetId オブジェクトクラスを追加します。
# nisNetId objectclass objectClass nisNetId oid 1.3.6.1.4.1.42.2.27.1.2.6 superior top requires cn allows nisNetIdUser, nisNetIdGroup, nisNetIdHost |
SolarisAuditUser オブジェクトクラスを追加します。
# User auditing objectclass objectclass SolarisAuditUser oid 1.3.6.1.4.1.42.2.27.5.2.2 superior top allows SolarisAuditAlways, SolarisAuditNever |
SolarisUserAttr オブジェクトクラスを追加します。
# RBAC User attributes objectclass objectclass SolarisUserAttr oid 1.3.6.1.4.1.42.2.27.5.2.3 superior top allows SolarisUserQualifier, SolarisAttrReserved1, SolarisAttrReserved2, SolarisAttrKeyValue |
SolarisAuthAttr オブジェクトクラスを追加します。
# RBAC Authorizations Objectclass objectclass SolarisAuthAttr oid 1.3.6.1.4.1.42.2.27.5.2.4 superior top requires cn allows SolarisAttrReserved1, SolarisAttrReserved2, SolarisAttrShortDesc, SolarisAttrLongDesc, SolarisAttrKeyValue |
SolarisProfAttr オブジェクトクラスを追加します。
# RBAC Profile objectclass objectClass SolarisProfAttr oid 1.3.6.1.4.1.42.2.27.5.2.5 superior top requires cn allows SolarisAttrReserved1, SolarisAttrReserved2, SolarisAttrLongDesc, SolarisAttrKeyValue |
SolarisExecAttr オブジェクトクラスを追加します。
# RBAC Execution objectlcass objectClass SolarisExecAttr oid 1.3.6.1.4.1.42.2.27.5.2.6 superior top allows SolarisKernelSecurityPolicy, SolarisProfileType, SolarisAttrReserved1, SolarisAttrReserved2, SolarisProfileID, SolarisAttrKeyValue |
nisKeyObject オブジェクトクラスを追加します。
# Publickey objectclass objectClass nisKeyObject oid 1.3.6.1.1.1.2.14 superior top requires cn, nisPublicKey, nisSecretKey allows uidNumber, description |
SolarisProject オブジェクトクラスを追加します。
# Project Accounting objectclass objectclass SolarisProject oid 1.3.6.1.4.1.42.2.27.5.2.1 superior top requires SolarisProjectID, SolarisProjectName allows memberUid, memberGid, description, SolarisProjectAttr |
nisMapEntry 属性を追加します。
# Sun nisMapEntry attributes attribute nisDomain 1.3.6.1.1.1.1.30 cis |
LDAP クライアントプロファイル属性を追加します。
# attributes for LDAP client profile attribute SolarisLDAPServers 1.3.6.1.4.1.42.2.27.5.1.15 cis attribute SolarisSearchBaseDN 1.3.6.1.4.1.42.2.27.5.1.16 dn single attribute SolarisCacheTTL 1.3.6.1.4.1.42.2.27.5.1.17 cis single attribute SolarisBindDN 1.3.6.1.4.1.42.2.27.5.1.18 dn single attribute SolarisBindPassword 1.3.6.1.4.1.42.2.27.5.1.19 ces single attribute SolarisAuthMethod 1.3.6.1.4.1.42.2.27.5.1.20 cis attribute SolarisTransportSecurity 1.3.6.1.4.1.42.2.27.5.1.21 cis attribute SolarisCertificatePath 1.3.6.1.4.1.42.2.27.5.1.22 ces single attribute SolarisDataSearchDN 1.3.6.1.4.1.42.2.27.5.1.24 cis attribute SolarisSearchScope 1.3.6.1.4.1.42.2.27.5.1.25 cis single attribute SolarisSearchTimeLimit 1.3.6.1.4.1.42.2.27.5.1.26 int single attribute SolarisPreferredServer 1.3.6.1.4.1.42.2.27.5.1.27 cis attribute SolarisPreferredServerOnly 1.3.6.1.4.1.42.2.27.5.1.28 cis single attribute SolarisSearchReferral 1.3.6.1.4.1.42.2.27.5.1.29 cis single |
mailGroup 属性を追加します。
# Sun additional attributes to RFC2307 attributes (NIS) attribute mgrpRFC822MailMember 2.16.840.1.113730.3.1.30 cis attribute rfc822MailMember ces |
nisKeyObject 属性を追加します。
# Sun nisKeyObject attributes attribute nisPublickey 1.3.6.1.1.1.1.28 cis attribute nisSecretkey 1.3.6.1.1.1.1.29 cis |
nisNetId 属性を追加します。
# Sun nisNetId attributes attribute nisNetIdUser 1.3.6.1.4.1.42.2.27.1.1.12 ces attribute nisNetIdGroup 1.3.6.1.4.1.42.2.27.1.1.13 ces attribute nisNetIdHost 1.3.6.1.4.1.42.2.27.1.1.14 ces |
監査属性を追加します。
# attributes for auditing attribute SolarisAuditAlways 1.3.6.1.4.1.42.2.27.5.1.5 cis single attribute SolarisAuditNever 1.3.6.1.4.1.42.2.27.5.1.6 cis single |
RBAC 属性を追加します。
# attributes for RBAC attribute SolarisAttrKeyValue 1.3.6.1.4.1.42.2.27.5.1.4 cis single attribute SolarisAttrShortDesc 1.3.6.1.4.1.42.2.27.5.1.7 cis single attribute SolarisAttrLongDesc 1.3.6.1.4.1.42.2.27.5.1.8 cis single attribute SolarisKernelSecurityPolicy 1.3.6.1.4.1.42.2.27.5.1.9 cis single attribute SolarisProfileType 1.3.6.1.4.1.42.2.27.5.1.10 cis single attribute SolarisProfileId 1.3.6.1.4.1.42.2.27.5.1.11 ces single attribute SolarisUserQualifier 1.3.6.1.4.1.42.2.27.5.1.12 cis single attribute SolarisAttrReserved1 1.3.6.1.4.1.42.2.27.5.1.13 cis single attribute SolarisAttrReserved2 1.3.6.1.4.1.42.2.27.5.1.14 cis single |
nisKeyObject 属性を追加します。
# attributes for nisKeyObject attribute nisPublicKey 1.3.6.1.1.1.1.28 cis attribute nisSecretKey 1.3.6.1.1.1.1.29 cis |
プロジェクトアカウント属性を追加します。
# attributes for Project Accounting attribute SolarisProjectID 1.3.6.1.4.1.42.2.27.5.1.1 int single attribute SolarisProjectName 1.3.6.1.4.1.42.2.27.5.1.2 ces single attribute SolarisProjectAttr 1.3.6.1.4.1.42.2.27.5.1.3 ces attribute memberGid 1.3.6.1.4.1.42.2.27.5.1.30 ces |
ディレクトリサーバーに Unix Crypt 形式でパスワードを格納していない場合、ディレクトリサーバーを構成してパスワードを格納します。Unix Crypt 形式のパスワードの設定方法についての詳細は、iPlanet のマニュアルを参照してください。
ツリーのトップエントリの ACI (アクセス制御情報) を設定します。この ACI は所有者が自分のエントリを変更する権限を制御します。たとえば、デフォルトの ACI ではユーザーが自分のホームディレクトリを変更できますが、次の例のように変更した ACI では自分のホームディレクトリを変更できません。各自の環境に合わせて ACI を設定してください。
次に示すようなツリーのトップエントリである「Allow self entry modification」ACI を、
aci=(targetattr = "*")(version 3.0; acl "Allow self entry modification"; allow (write)userdn = "ldap:///self";) |
次のように変更します。
aci=(targetattr!="cn || uid || uidNumber || gidNumber || homeDirectory || shadowLastChange || shadowMin || shadowMax || shadowWarning || shadowInactive || shadowExpire || shadowFlag || memberUid") (version 3.0; acl "Allow self entry modification"; allow (write) userdn = "ldap:///self"; ) |
ユーザーが変更すべきでない属性 (uid など) の変更許可を与えないでください。それを許可すると、uid を 0 に設定することによって、ユーザーがスーパーユーザーになることができるようになってしまいます。
ネームコンテナの一覧は、ディレクトリ情報ツリーを参照してください。
次のコンテナエントリは、NIS ドメインで使用した nisDomain の例に基づいています。実際に使用するときは、これらのコンテナエントリを各自の環境に合わせて変更してください。
ドメインエントリを追加します。
dn: dc=mkt,dc=mainstore,dc=com dc: mkt associatedDomain: mkt.mainstore.com objectClass: top objectClass: domain objectClass: domainRelatedObject objectclass: nisDomainObject nisdomain: mkt.mainstore.com |
ネームコンテナのエントリを追加します。
dn: ou=people,dc=mkt,dc=mainstore,dc=com ou: people objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=mkt,dc=mainstore,dc=com ou: Group objectClass: top objectClass: organizationalUnit dn: ou=rpc,dc=mkt,dc=mainstore,dc=com ou: rpc objectClass: top objectClass: organizationalUnit dn: ou=protocols,dc=mkt,dc=mainstore,dc=com ou: protocols objectClass: top objectClass: organizationalUnit dn: ou=networks,dc=mkt,dc=mainstore,dc=com ou: networks objectClass: top objectClass: organizationalUnit dn: ou=netgroup,dc=mkt,dc=mainstore,dc=com ou: netgroup objectClass: top objectClass: organizationalUnit dn: ou=aliases,dc=mkt,dc=mainstore,dc=com ou: aliases objectClass: top objectClass: organizationalUnit dn: ou=Hosts,dc=mkt,dc=mainstore,dc=com ou: Hosts objectClass: top objectClass: organizationalUnit dn: ou=services,dc=mkt,dc=mainstore,dc=com ou: services objectClass: top objectClass: organizationalUnit dn: ou=Ethers,dc=mkt,dc=mainstore,dc=com ou: Ethers objectClass: top objectClass: organizationalUnit dn: ou=profile,dc=mkt,dc=mainstore,dc=com ou: profile objectClass: top objectClass: organizationalUnit dn: nismapname=auto_home,dc=mkt,dc=mainstore,dc=com nismapname: auto_home objectClass: top objectClass: nisMap dn: nismapname=auto_direct,dc=mkt,dc=mainstore,dc=com nismapname: auto_direct objectClass: top objectClass: nisMap dn: nismapname=auto_master,dc=mkt,dc=mainstore,dc=com nismapname: auto_master objectClass: top objectClass: nisMap dn: nismapname=auto_shared,dc=mkt,dc=mainstore,dc=com nismapname: auto_shared objectClass: top objectClass: nisMap |
これらのパラメータの値は、読み込むデータ量、データの使用パターン、使用するハードウェアなどによってサーバーごとに異なります。
キャッシュの最大エントリ数、キャッシュの最大サイズ (バイト) を設定し、上限値を確認します。
システムで使用できるメモリーおよびディスク容量に合わせて、キャッシュパラメータを変更してください。
サイズおよび時間の上限パラメータを、環境に合わせて設定します。
sizelimit および timelimit を -1 に指定すると、取り得る上限値として設定されます。各自のシステムに合わせて値を選択してください。
次のプロキシエージェント ACI (アクセス制御情報) は、NIS ドメインで使用した nisDomain の例に基づいています。実際に使用するときは、これらのプロキシエージェント ACI を各自の環境に合わせて変更してください。
すべてのクライアントで認証に pam_unix を使用する場合は、ldapmodify を使用して検索起点識別名に読み取り ACI を設定することによって、プロキシエージェントにパスワードの読み取り権を与えます。
#ldapmodify -D "cn=Directory Manager" -w nssecret -f aci.ldif |
aci.ldif の内容は次のとおりです。
dn: dc=mkt,dc=mainstore,dc=com changetype: modify add: aci aci: (target="ldap:///dc=mkt,dc=mainstore,dc=com") (targetattr="userPassword")(version 3.0; acl "password read"; allow (compare,read,search) userdn = "ldap:///cn=proxyagent, ou=profile,dc=mkt,dc=mainstore,dc=com"; ) |
ldapsearch を使用して新しい ACI 設定を確認します。
ldapsearch は変更された ACI を表示します。
#ldapsearch -L -h <servername> -b "dc=mkt,dc=mainstore,dc=com" \ -s base "objectclass=*" |
ldapsearch によって返される変更後の ACI は、次のようになります。
dn: dc=mkt,dc=mainstore,dc=com dc: mkt associateddomain: mkt.mainstore.com objectclass: top objectclass: domain objectclass: domainRelatedObject objectclass: nisDomainObject nisdomain: mkt.mainstore.com aci: (target="ldap:///dc=mkt,dc=mainstore,dc=com") (targetattr="userPassword")(version 3.0; acl "password read"; allow (compare,read,search) userdn = "ldap:///cn=proxyagent, ou=profile,dc=mkt,dc=mainstore,dc=com"; ) |
pam_ldap 認証はサーバー側で実行されるため、プロキシエージェントにパスワード属性の読み取り権を与える必要はありません。pam_ldap についての詳細は、PAMを参照してください。
NIS(YP) 環境から LDAP 環境に移行するには、dsimport を使用して NIS データを LDIF 書式に変換します。dsimport は NIS 拡張の一部で、iPlanet Advantage Software CD vol.1 に収録されています。マニュアルは、次の Web サイトで参照できます。http://docs.iplanet.com/docs/manuals/directory.html
NIS パスワードを LDIF 書式に変換します。
# cat passwd.nis | dsimport -n -m nis.mapping -t passwd \ -M SIMPLE -D "" -w "" >passwd.ldif |
passwd.ldif ファイルを LDAP サーバーに読み込みます。
NIS グループデータを LDIF 書式に変換します。
# cat group.nis | dsimport -n -m nis.mapping -t group \ -M SIMPLE -D "" -w "" > group.ldif |
group.ldif を LDAP サーバーに読み込みます。
上記の手順を繰り返して、すべてのネームコンテナファイルを変換します。
ns-slapd の ldif2db コマンドまたは ldapadd コマンドを使用して、LDIF 書式ファイルをディレクトリデータベースにインポートします。
ns-slapd ldif2db コマンドについての詳細は、『Directory Server Administrator's Guide』の「Managing Directory Server Databases」を参照してください。ldapadd については、ldapadd(1) のマニュアルページを参照してください。
ファイルデータを LDIF 書式に変換するために、dsimport は、エントリの格納方法を定義するマップファイルを変更する必要があります。
インデックスの作成方法については、『iPlanet Directory Server Administrator's Guide』の「Managing Indexes」を参照してください。
次の Solaris クライアント属性にインデックスを付けます。
membernisnetgroup pres,eq,sub nisnetgrouptriple pres,eq,sub memberuid pres,eq macAddress pres,eq uid pres,eq uidNumber pres,eq gidNumber pres,eq ipHostNumber pres,eq ipNetworkNumber pres,eq ipProtocolNumber pres,eq oncRpcNumber pres,eq ipServiceProtocol pres,eq ipServicePort pres,eq nisDomain pres,eq nisMapName pres,eq mail pres,eq |
ldapsearch を使用して、VLV 制御タイプが 1.2.840.113556.1.4.473、VLV 制御値が 2.16.840.1.113730.3.4.9 の OID によって特定される仮想リスト表示 (VLV) を、ディレクトリがサポートしているかどうかを確認します。
# ldapsearch -b "" -s base objectclass=\* |
ldapsearch は次の検索結果を返します。
objectclass=top namingcontexts=dc=sun,dc=com namingcontexts=o=NetscapeRoot subschemasubentry=cn=schema supportedcontrol=2.16.840.1.113730.3.4.2 supportedcontrol=2.16.840.1.113730.3.4.3 supportedcontrol=2.16.840.1.113730.3.4.4 supportedcontrol=2.16.840.1.113730.3.4.5 supportedcontrol=1.2.840.113556.1.4.473 supportedcontrol=2.16.840.1.113730.3.4.9 supportedcontrol=2.16.840.1.113730.3.4.12 supportedsaslmechanisms=EXTERNAL supportedldapversion=2 supportedldapversion=3 dataversion=atitrain2.east.sun.com:389 020000605172910 netscapemdsuffix=cn=ldap://:389,dc=atitrain2,dc=east,dc=sun,dc=com |
getpwent: vlvFilter: (objectclass=posixAccount), vlvScope: 1 getspent: vlvFilter: (objectclass=posixAccount), vlvScope: 1 getgrent: vlvFilter: (objectclass=posixGroup), vlvScope: 1 gethostent: vlvFilter: (objectclass=ipHost), vlvScope: 1 getnetent: vlvFilter: (objectclass=ipNetwork), vlvScope: 1 getprotoent: vlvFilter: (objectclass=ipProtocol), vlvScope: 1 getrpcent: vlvFilter: (objectclass=oncRpc), vlvScope: 1 getaliasent: vlvFilter: (objectclass=rfc822MailGroup), vlvScope: 1 getserviceent: vlvFilter: (objectclass=ipService), vlvScope: 1 |
ツリー内の ou のうち、多数のオブジェクトを含むかアクセス頻度の高いものに、これらのインデックスを作成します。
パスワードエントリ (getpwent) については、ディレクトリに次のエントリを追加します。
dn: cn=getpwent,cn=config,cn=ldbm objectclass: top objectclass: vlvSearch cn: getpwent vlvBase: ou=people,dc=eng,dc=sun,dc=com vlvScope: 1 vlvFilter: (objectclass=posixAccount) aci: (target="ldap:///cn=getpwent,cn=config,cn=ldbm")(targetattr="*") (version 3.0; acl "Config";allow(read,search,compare)userdn="ldap:///anyone";) dn: cn=getpwent,cn=getpwent,cn=config,cn=ldbm cn: getpwent vlvSort: cn uid objectclass: top objectclass: vlvIndex |
# cd /usr/netscape/server4/slapd* # ./vlvindex getpwent OK# ./vlvindex getgrent OK# ./vlvindex gethostent OK# ./vlvindex getspent OK# # ./vlvindex [05/Jun/2000:15:34:31 -0400] - ldbm2index: Unknown VLV Index named '' [05/Jun/2000:15:34:31 -0400] - ldbm2index: Known VLV Indexes are: 'getgrent', 'gethostent', 'getnetent', 'getpwent', 'getspent', |
残りの VLV 属性について、手順 4 と 5 を繰り返します。
ldapsearch を使用して、VLV 制御 ACI を表示します。
#ldapsearch -D "cn=Directory Manager" -w nssecret -b cn=features, \ cn=config objectclass=\* |
検索結果は次のとおりです。
cn=features,cn=config objectclass=top cn=features cn=options,cn=features,cn=config objectclass=top cn=options oid=2.16.840.1.113730.3.4.9,cn=features,cn=config objectclass=top objectclass=directoryServerFeature oid=2.16.840.1.113730.3.4.9 cn=VLV Request Control aci=(targetattr != "aci")(version 3.0; acl "VLV Request \ Control"; allow( read, search, compare ) userdn = "ldap:///all";) |
ldapmodify を使用して、すべてのユーザーに、VLV 機能の読み取り/検索/比較の権限を与えます。これにより、anonymous (匿名) による検索で VLV 制御を使用しても失敗しなくなります。
#ldapmodify -D "cn=Directory Manager" -w nssecret -f vlvcntrl.ldif |
vlvcntrl.ldif の内容は次のとおりです。
dn: oid=2.16.840.1.113730.3.4.9,cn=features,cn=config changetype: modify replace: aci aci: (targetattr !="aci")(version 3.0; acl "VLV Request Control"; allow (compare,read,search) userdn = "ldap:///anyone"; ) |
ldapsearch を使用して、変更された VLV 制御 ACI を表示します。
#ldapsearch -L -b "cn=features,cn=config" -s one \ oid=2.16.840.1.113730.3.4.9 |
ldapsearch が返す ACI は次のようになります。
dn: oid=2.16.840.1.113730.3.4.9,cn=features,cn=config objectclass: top objectclass: directoryServerFeature oid: 2.16.840.1.113730.3.4.9 cn: VLV Request Control aci: (targetattr !="aci")(version 3.0; acl "VLV Request Control"; allow (compare,read,search) userdn = "ldap:///anyone"; ) |
この手順は、proxyagent エントリを使用する場合だけ必要になります。
proxyagent エントリを LDAP サーバーに追加します。
#ldapadd -D "cn=Directory Manager" -w nssecret -f proxyagent.ldif |
proxyagent.ldif の内容は次のとおりです。
dn: cn=proxyagent,ou=profile,dc=mkt,dc=mainstore,dc=com cn: proxyagent sn: proxyagent objectclass: top objectclass: person userpassword: proxy_agent_password |
ou は、ou=profile または ou=person に設定できます。
クライアントプロファイルを生成し、それを LDAP サーバーに追加します。
ldap_gen_profile -P profile -b baseDN -D bindDN \ -w bindDNpasswd ldapServer_IP_address(es)[:port#] |
bindDN はプロキシエージェントのバインド DN です。障害発生時に他の LDAP サーバーで処理を継続することを可能にする場合は、2 つ以上の LDAP サーバーの IP アドレスを指定します。上のコマンドの実行結果を、profile.ldif などの名前のファイルに格納します。
典型的なコマンド行を示します。
ldap_gen_profile -P myProfile -b "dc=mkt,dc=mainstore,dc=com" \ -D "cn=proxyagent,ou=profile,dc=mkt,dc=mainstore,dc=com" \ -w proxy_agent_pswd -a simple 100.100.100.100 > profile.ldif |
このクライアントプロファイルを LDAP サーバーに追加して、クライアントがダウンロードできるようにします。