NIS ファイルから作成するエントリのオブジェクトクラスと属性は、そのテーブル用のマッピング定義の「Import」または「Build」セクションにリストされます。「Build」セクションの LDAP 属性に割り当てる値は、テーブル定義の他のセクションに指定したトークンからとられます。
NIS Makefile にリストされているファイルのうち、nis.mapping ファイルに特定のマッピング定義がないものには、総称マッピングが適用されます。このマッピングでは、ファイルから NIS キーと NIS 値の情報が抽出され、次の総称的な NISobject オブジェクトクラスに基づいて次のようにエントリが作成されます。
cn |
nisKey (LDAP 検索で大文字と小文字を区別する) |
sunNisKey |
nisKey |
nisMapEntry |
nisValue |
nisMapName |
makefile で宣言されたマップ名 |
objectClass |
top |
nisSunObject |
マッピングファイルに記述されたすべての標準 NIS テーブルに対して作成されるオブジェクトクラスと属性を次に示します。ここでは、aliases ファイルのマッピングだけを詳しく説明します。
aliases ファイルのエントリは、通常、次の書式になっています。
aliasname: mailaddress1, mailaddress2, mailaddress3...
nis.mapping ファイルでは、この行のマッピングは次のようになっています。
Table: mail.aliases ... Import: Extract: LINE =>$aliasNameT:$aliasListT Condense: rfc822mailMembersT=string2instances($aliasListT,",") trimrfc822mailMembersT=trim($rfc822mailMembersT) objectClassT=string2instances("top nisMailAlias", " ") Build: dn=cn=$aliasNameT,$BASE_DN cn=$aliasNameT rfc822mailMember=$trimrfc822mailMembersT objectClass=$objectClassT
「Extract」セクションのキーワード LINE は、aliases ファイルの行の初期分解を表します。aliases ファイルでコロン以外の句読記号で別名と別名リストを区切っている場合は、ファイル書式に合わせて LINE 定義を変更する必要があります。
「Condense」セクションの rfc822mailMembersT のトークン定義では、別名リストの次の段階の分解を行います。aliases ファイルでコンマ以外の句読記号で別名リストの各要素を区切っている場合は、ファイル書式に合わせてトークン定義を変更する必要があります。
trimrfc822mailMemberT のトークン定義では、別名リストに対して前に行なった string2instances 操作の結果から不要な空白を取り除きます。
objectClassT のトークン定義では、nisMailAlias オブジェクトクラスの継承階層を指定します。
「Build」セクションでは、cn 属性と属性値を BASE_DN トークンと結合してエントリの識別名を作成します。BASE_DN トークンは、そのエントリを入れる名前付きコンテキストを表します。
rfc822mailMember 属性と objectClass 属性には複数の値が入ります。string2instances 操作によって得られた各値に対し、これらの属性が 1 つ発生します。
たとえば、ドメイン France.XYZ.com の aliases ファイルに次の行があるとします。
dir-team: pdurand, jdupond, asantini, msmith, dphilippe, smartin
aliases ファイルのこの行から作成されるディレクトリエントリの識別名は、cn=dir-team, ou=Aliases, ou=Services, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は、次のようになります。
cn |
dir-team |
rfc822mailMember |
pdurand |
jdupond |
|
asantini |
|
msmith |
|
dphilippe |
|
smartin |
|
objectClass |
top |
nisMailAlias |
bootparams ファイルのエントリは、通常、次の書式になっています。
hostname parameter1 parameter2 parameter3...parameterx
たとえば、France.XYZ.com ドメインの bootparams ファイルに次の行があるとします。
camembert root=server1:/export/camembert/root ¥ swap=server1:/export/camembert/swap ¥ domain=France.XYZ.com
bootparams ファイルのこの行から作成されるディレクトリエントリの識別名は、cn=camembert, ou=Host, ou=Services, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は、次のようになります。
cn |
camembert |
bootParameter |
root=server1:/export/roquefort/root |
swap=server1:/export/roquefort/swap |
|
domain=France.XYZ.com |
|
objectClass |
top |
device |
|
bootableDevice |
ホスト camembert には、/etc/ethers と /etc/hosts にもエントリがあります。しかし、LDAP ディレクトリでは、ホスト camembert のエントリは 1 つだけで、他のすべての属性は ethers テーブルマッピングと hosts テーブルマッピングから派生したものです。ホスト camembert 用に作成された LDAP ディレクトリには、いくつかのオブジェクトクラスがあります。このうち、1 つは継承した構造体オブジェクトクラス device で、3 つは補助オブジェクトクラス bootableDevice、ieee802Device、ipHost です。
「ethers」と 「hosts」の例の場合、LDAP ディレクトリに作成されるホスト camembert の完全なエントリは、次のようになります。
cn |
camembert |
bertie |
|
bootParameter |
root=server1:/export/roquefort/root |
swap=server1:/export/roquefort/swap |
|
domain=France.XYZ.com |
|
macAddress |
0:1:23:aa:bb:cc |
ipHostNumber |
123.456.789.1 |
description |
SS5 Pierre's Desktop |
objectClass |
top |
device |
|
bootableDevice |
|
ieee802Device |
|
ipHost |
bootparams ファイルから camembert のエントリを削除すると、camembert のディレクトリエントリが更新され、bootableDevice オブジェクトクラスとそのオブジェクトクラス固有の bootParameter 属性が削除されます。
ethers ファイルのエントリは、通常、次の書式になっています。
ethernetaddress machinename
たとえば、ドメイン France.XYZ.com の ethers ファイルに次の行があるとします。
0:1:23:aa:bb:cc camembert
ethers ファイルのこの行から作成されるディレクトリエントリの識別名は、cn=camembert, ou=Hosts, ou=Services, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は次のようになります。
cn |
camembert |
macAddress |
0:1:23:aa:bb:cc |
objectClass |
top |
device |
|
ieee802Device |
ホスト camembert には /etc/bootparams ファイルと /etc/hosts ファイルにもエントリがある場合があります。これらのファイルから作成される LDAP ディレクトリの完全なエントリの詳細は、「bootparams」を参照してください。
group ファイルのエントリは、通常、次の書式になっています。
groupname:password:groupidnumber:listofmembers
たとえば、ドメイン France.XYZ.com の group ファイルに次の行があるとします。
sysadmin:yai957KJwXrjc:10:bgreen, hgrant, dbrown
group ファイルのこの行から作成されるディレクトリエントリの識別名は、cn=sysadmin, ou=Group, ou=Services, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は次のようになります。
cn |
sysadmin |
gidNumber |
10 |
memberUid |
bgreen |
hgrant |
|
dbrown |
|
userPassword |
{crypt}yai957KJwXrjc |
objectClass |
top |
posixGroup |
hosts ファイルのエントリは、通常、次の書式になっています。
ipaddress hostname hostaliasnames #hostdescription
たとえば、ドメイン France.XYZ.com の hosts ファイルに次の行があるとします。
123.456.789.1 camembert bertie # SS5 Pierre's Desktop
hosts ファイルのこの行から作成されるディレクトリエントリの識別名は、cn=camembert, ou=Hosts, ou=Services, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は次のようになります。
cn |
camembert |
bertie |
|
ipHostNumber |
123.456.789.1 |
description |
SS5 Pierre's Desktop |
objectClass |
top |
device |
|
ipHost |
ホスト camembert には /etc/bootparams ファイルと /etc/ethers ファイルにもエントリがある場合があります。これらのファイルから作成される LDAP ディレクトリの完全なエントリの詳細は、「bootparams」を参照してください。
netgroup ファイルのエントリは、通常、次の書式になっています。
netgroupname grouptriple grouptriple grouptriple grouptriple
grouptriple の書式は (hostname, username, domainname) です。
たとえば、ドメイン France.XYZ.com の netgroup ファイルに次の行があるとします。
printers¥ (bordeaux,-,France.XYZ.com)¥ (bourgogne,-,France.XYZ.com)¥ (sauternes,-,France.XYZ.com)
netgroup ファイルのこの行から作成されるディレクトリエントリの識別名は、cn=printers, ou=netgroup, ou=Services, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は次のようになります。
cn |
printers |
nisNetGroupTriple |
bordeaux,-,France.XYZ.com |
bourgogne,-,France.XYZ.com |
|
sauternes,-,France.XYZ.com |
|
objectClass |
top |
nisNetGroup |
networks ファイルのエントリは、通常、次の書式になっています。
networkname networkaddress networkalias #description
たとえば、ドメイン France.XYZ.com の networks ファイルに次の行があるとします。
XYZ-eng 123.456.789 eng #engineering subnetwork
networks ファイルのこの行から作成されるディレクトリエントリの識別名は、cn=XYZ-eng, ou=networks, ou=Services, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は次のようになります。
cn |
XYZ-eng |
eng |
|
ipNetworkNumber |
123.456.789 |
description |
engineering subnetwork |
objectClass |
top |
ipNetwork |
passwd ファイルのエントリは、通常、次の書式になっています。
userid:userPasswd:uidnumber:gidnumber:gecos:homeDir:shell
passwd ファイルに関連付けられた shadow ファイルがある場合、そのファイルの書式は、通常、次のようになっています。
userid:userPasswd:::::::
passwd ファイルと shadow ファイルのユーザー ID は同じですが、ユーザーのパスワードは、実際には passwd ファイルではなく shadow ファイルに格納されます。
たとえば、ドメイン France.XYZ.com の passwd ファイルに Pierre Durand に対する次の行があるとします。
pdurand:x:12345:67:Pierre Durand - Project Manager:/home/pdurand:/bin/csh
ユーザーパスワードの代わりに x があるのは、実際のパスワードが shadow ファイルに格納されていることを示します。shadow ファイルには、Pierre Durand に対し次の行があります。
pdurand:yai957KJwXrjc:::::::
passwd ファイルと shadow ファイルのこれらの行から作成されるディレクトリエントリの識別名は、uid=pdurand, ou=People, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は次のようになります。
cn |
Pierre Durand |
uid |
pdurand |
userPassword |
{crypt}yai957KJwXrjc |
uidNumber |
12345 |
gidNumber |
67 |
gecos |
Pierre Durand - Project Manager |
homeDirectory |
/home/pdurand |
loginshell |
/bin/csh |
objectClass |
top |
account |
|
posixAccount |
protocols ファイルのエントリは、通常、次の書式になっています。
protocolname protocolnumber protocolalias #description
たとえば、ドメイン France.XYZ.com の protocols ファイルに次の行があるとします。
tcp 0 TCP_Protocol #Transmission Control Protocol
protocols ファイルのこの行から作成されるディレクトリエントリの識別名は、ou=protocols, ou=Services, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は次のようになります。
cn |
tcp |
TCP_Protocol |
|
ipProtocolNumber |
0 |
description |
Transmission Control Protocol |
objectClass |
top |
ipProtocol |
rpc ファイルのエントリは、通常、次の書式になっています。
programname programnumber protocolalias #description
たとえば、ドメイン France.XYZ.com の rpc ファイルに次の行があるとします。
yppasswdd 100123 yppasswd
rpc ファイルのこの行から作成されるディレクトリエントリの識別名は、cn=yppasswdd, ou=rpc, ou=Services, dc=France, dc=XYZ, dc=com です。このエントリとして格納される属性とその値は次のようになります。
cn |
yppasswdd |
yppasswd |
|
oncRpcNumber |
100123 |
objectClass |
top |
oncRpc |
NIS 環境では、ドメインの NIS サーバーのリストが ypservers ファイルに入っています。
たとえば、ドメイン France.XYZ.com の ypservers ファイルに次のリストがあるとします。
brie camembert emmental gorgonzola roquefort
このファイルにリストされているサーバーごとにディレクトリエントリが作成されます。たとえば、サーバー brie 用に作成されるエントリの識別名は、cn=brie, ou=ypservers, ou=Services, dc=France, dc=XYZ, dc=com になります。また、サーバー brie のエントリは次のようになります。
cn |
brie |
objectClass |
top |
sunNisServer |