この章では、NIS (Network Information Service) の初期設定と構成を説明します。
NIS の一般的な説明と概要については、『Solaris ネーミングの管理』を参照してください。
次の NIS の機能は新規のものか、または Solaris 8 オペレーティング環境で変更されました。
新しい ipnodes マップ (ipnodes.byaddr および ipnodes.byname) が、NIS に追加されました。これらのマップは、 IPv4 および IPv6 の両方のアドレスを格納しています (ipnodes(4)のマニュアルページを参照).。NIS クライアントとサーバーは、IPv4 または IPv6 のどちらかの RPC トランスポートを使用して通信することができます。
NIS の構成を始める前に、以下を行う必要があります。
NIS を使用するすべてのマシンの nsswitch.conf ファイルを適切に構成する (詳細は、第 1 章「ネームサービススイッチの設定」を参照 )
NIS ドメインの計画 (「NISドメインの計画」を参照)
NIS のサーバーやクライアントとしてマシンの構成を始める前に、NIS ドメインの計画が必要です。
NIS ドメインに入れるマシンを決めてください。NIS ドメインはネットワークと同一である必要はありません。ネットワークには複数の NIS ドメインが存在でき、また NIS ドメインに属さないマシンもネットワーク上に存在できます。
NIS ドメイン名を選択します。NIS ドメイン名は、最長 256 文字の長さにできますが、短い名前のほうが実用的です。ドメイン名が 32 文字を超えないように制限するとよいでしょう。ドメイン名は大文字と小文字を区別します。便宜上、インターネットのドメイン名を NIS ドメイン名のもととして使用できます。たとえば、インターネットのドメイン名が doc.com の場合には、NISドメイン名を doc.com にします。doc.com を 2 つのドメインに分けて、1 つを営業部門に、もう片方を製造部門に使用する場合には、1 つは sales.doc.com、もう片方は manf.doc.com と名前をつけます。
マシンが NIS サービスを使用できるようになる前に、正確な NIS ドメイン名とマシン名を設定する必要があります。マシン名は、マシンの /etc/nodename ファイルによって設定され、マシンのドメイン名は、マシンの /etc/defaultdomain ファイルによって設定されます。これらファイルはブート時に読み取られ、内容はそれぞれ uname -S と domainname コマンドに使用されます。ディスクレスマシンはブートサーバーからファイルを読み取ります。
NIS サーバーになるマシンを決定します。マスターサーバーになるマシン (後で変更可能) を 1 つ選択します。スレーブサーバーを作る場合には、それを決定します (NIS と NIS の条件の概要については、『Solaris ネーミングの管理』を参照)。
NIS クライアントになるマシンを決定します。一般的には、ドメイン内のすべてのマシンは NIS クライアントになるように設定されますが、これは必須ではありません。
Solaris 8 リリースソフトウェアのインストール、nsswitch.conf ファイルの設定、ドメインの計画が終わったら、次の NIS の構成手順を実行する必要があります。
マスターサーバーの準備をする (「マスターサーバーの準備」を参照
NIS のマスターサーバーを構成する (「ypinit によるマスターサーバーの設定」を参照)
マスターサーバーで NIS デーモンを起動する (「マスターサーバー上での NIS サービスの開始」を参照)
スレーブサーバーを構成する (「NIS スレーブサーバーの設定」を参照)
NIS クライアントマシンを構成する (「NIS クライアントの設定」を参照)
文脈によっては、「マシン」名は「ホスト」名や「ワークステーション」名と呼ばれる場合があります。この節では「マシン」を使用しますが、画面メッセージや NIS マップ名によっては、「ホスト」や「ワークステーション」を使用する場合があります。
次の節ではこれら手順の詳細を説明します。
マスターサーバーの設定では、マスターサーバーの情報源 (入力テキストファイル) の NIS マスターサーバーマップへの変換が必要です。これを行う前にすべき準備があります。
入力ファイルはマスターサーバーの /etc ディレクトリか、その他のディレクトリに置かれます。/etc に置くのは望ましくありません。マップの内容が、マスターサーバーのローカルファイルの内容と同じになるからです。これは passwd と shadow のファイルに特有の問題です。ユーザー全員がマスターサーバーのマップにアクセスして、passwd マップを通じて YP クライアントのすべてに root のパスワードが渡されるためです。この詳細は、「passwd ファイルと名前空間のセキュリティ」を参照してください。
他のディレクトリにソースファイルを置く場合に、your-choice がソースファイルの格納に使用するディレクトリの名前であるときは、/var/yp 内の Makefile を修正して、DIR=/etc 行を DIR=/your-choice に変更する必要があります。これによって、クライアント上のファイルのようにサーバー上のローカルファイルを取り扱うことができます。Makefile を編集する前に、編集前の Makefile を別の名前のファイルに保存しておくことをお勧めします。
passwd マップは特殊なケースです。古い Solaris 1.x の passwd ファイル形式の他に、この NIS の実装は、NIS のパスワードマップの構築用の入力として Solaris 8 リリースの/etc/passwd と /etc/shadow ファイル形式を受け付けます。
セキュリティ上の理由で未承認のルートアクセスを防ぐために、NIS のパスワードマップの構築に使用されるファイルには、root に対するエントリを含めないでください。このため、パスワードマップはマスターサーバーの /etc ディレクトリに置かれたファイルから構築しないでください。パスワードマップの構築に使用されるパスワードファイルは、root エントリが削除されていて、また未承認アクセスから保護されるディレクトリに置かれる必要があります。
たとえば、マスターサーバーのパスワード入力ファイルは、/var/yp のようなディレクトリや、または選択した任意のディレクトリに格納し、ファイル自体は他のファイルへのリンクにはせず、またその位置を Makefile に指定します。/usr/lib/netsvc/yp/ypstart スクリプトは、Makefile に指定された構成に従って自動的に正確なディレクトリオプションを設定します。
入力ファイルが /etc 以外のディレクトリにある場合には、PWDIR
(パスワードマクロ) を変更して、passwd と shadow のファイルのあるディレクトリを参照するようにします。passwd マップ入力ファイルの格納に使用するディレクトリ名が your-choice の場合には、PWDIR=/etc の行を PWDIR=/your-choice に変更します。
ディレクトリ内で PWDIR
によって指定された passwd ファイルに root に対するエントリが含まれないようにしてください。
タスク |
説明 |
指示の参照先 | |||||||
---|---|---|---|---|---|---|---|---|---|
マスターサーバーの準備 |
NIS マップへのファイルの変換 | ||||||||
マスターサーバーの準備 |
|
ypinit を使用して設定する |
| ||||||
NIS マップへの変換用の入力ファイルを準備します。
マスターサーバーの入力ファイルを確認して、システム環境の最新の状態が反映されていることを確認します。
次のファイルを確認します。
auto.home または auto_home
auto.master または auto_master
bootparams
ethers
group
hosts
ipnodes
netgroup
netmasks
networks
passwd
protocols
rpc
services
shadow
passwd ファイルを選択した PWDIR ディレクトリにコピーします。
他の入力ファイルと異なり、/etc/mail/aliases ファイルは別のディレクトリに移動できません。このファイルは /etc/mail ディレクトリになければなりません。ドメイン全体で利用しようとするメールエイリアスがすべて含まれていることを検証して、/etc/mail/aliases ファイルが完全なことを確認します。詳細は、aliases(4) のマニュアルページを参照してください。
入力ファイルからすべてのコメント、その他の余計な行や情報を取り除きます。
これら操作は、sed または awk のスクリプトを通じて、またはテキストエディタを使用して行えます。Makefile は入力ファイルから不要なエントリをある程度自動的に削除しますが、手作業で検証し、取り除いてから、実行するようにしてください。
すべての入力ファイルのデータが正しい形式になっていることを確認します。
入力ファイルのデータは、それぞれのファイル用の形式になっている必要があります。該当するマニュアルページを参照して、各ファイルが正しい形式になっていることを確認します。
入力ファイルを確認して、それを入力ファイルディレクトリにコピーした後に、NIS サービスが使用する ndbm 形式のマップに、その入力ファイルを変換する必要があります。「ypinit によるマスターサーバーの設定」の節で説明するとおり、これはマスターサーバーで ypinit が実行されると自動的に行われます。
ypinit スクリプトは、プログラム make を呼び出します。このプログラムは、/var/yp ディレクトリに置かれた Makefile を使用します。例 10-1 のようなデフォルトの Makefile が、/var/yp ディレクトリで提供されます。この Makefile は、入力ファイルの ndbm 形式マップへの変換に必要なコマンドを含みます。
Makefile はそのまま使用でき、必要なら修正もできます。デフォルトの Makefile を修正するときは、将来必要な場合に備えて最初にオリジナルのデフォルト Makefile をコピーして格納してください。次の Makefile への修正のうちの 1 つまたは複数を実行する必要がある場合があります。
「デフォルトではないマップ」
デフォルトではない自分専用の入力ファイルを作成していて、それを NIS マップに変換する場合には、その入力ファイルを Makefile に追加する必要があります。
DIR
の値
「入力ファイルディレクトリ」で説明するように、/etc 以外のディレクトリに格納されたソースファイルを Makefile に使用させるには、Makefile の DIR
の値を使用するディレクトリに変更する必要があります。この値を Makefile で変更するときは、行をインデントしないでください。
PWDIR
の値
/etc 以外のディレクトリに格納された passwd、shadow、または adjunct 入力ファイルを Makefile に使用させるには、Makefile の PWDIR
の値を使用するディレクトリに変更する必要があります。この値を Makefile で変更するときは、行をインデントしないでください。
「ドメイン名リゾルバ」
現在のドメインにはないマシンに対して、NIS サーバーがドメイン名リゾルバを使用するようにするには、Makefile の行 B= をコメント化し、B= -b のコメントを解除 (有効化) します。
# # Copyright (c) 1996-1999, by Sun Microsystems, Inc. # All rights reserved. # #pragma ident "@(#)Makefile 1.25 99/06/01 SMI" # #---- # It is somewhat confusing to note that Solaris 2.x uses /etc/auto_master # instead of the 4.x /etc/auto.master file name because of NIS+ treating a # "." in a special way. # # Set the following variable to "-b" to have NIS servers use the domain name # resolver for hosts not in the current domain. #B=-b B= DIR =/etc # # If the ipnodes (IPv6 hosts file) lives in a directory other than # /etc/inet, then you'll need to change the following line. # INETDIR=/etc/inet # # If the passwd, shadow and/or adjunct files used by rpc.yppasswdd # live in directory other than /etc then you'll need to change the # following line. # DO NOT indent the line, however, since /etc/init.d/yp attempts # to find it with grep "^PWDIR" ... # PWDIR =/etc DOM = `domainname` NOPUSH = "" ALIASES = /etc/mail/aliases YPDIR=/usr/lib/netsvc/yp SBINDIR=/usr/sbin YPDBDIR=/var/yp YPPUSH=$(YPDIR)/yppush MAKEDBM=$(SBINDIR)/makedbm MULTI=$(YPDIR)/multi REVNETGROUP=$(SBINDIR)/revnetgroup STDETHERS=$(YPDIR)/stdethers STDHOSTS=$(YPDIR)/stdhosts MKNETID=$(SBINDIR)/mknetid MKALIAS=$(YPDIR)/mkalias CHKPIPE= || ( echo "NIS make terminated:" $@ 1>&2; kill -TERM 0 ) k: @if [ ! $(NOPUSH) ]; then $(MAKE) $(MFLAGS) -k all; ¥ else $(MAKE) $(MFLAGS) -k all NOPUSH=$(NOPUSH);fi all: passwd group hosts ipnodes ethers networks rpc services protocols ¥ netgroup bootparams aliases publickey netid netmasks c2secure ¥ timezone auto.master auto.home ¥ auth.attr exec.attr prof.attr user.attr audit.user c2secure: -@if [ -f $(PWDIR)/security/passwd.adjunct ]; then ¥ if [ ! $(NOPUSH) ]; then $(MAKE) $(MFLAGS) -k ¥ passwd.adjunct.time group.adjunct.time; ¥ else $(MAKE) $(MFLAGS) -k NOPUSH=$(NOPUSH) ¥ passwd.adjunct.time group.adjunct.time; ¥ fi; ¥ fi passwd.time: $(PWDIR)/passwd $(PWDIR)/shadow -@if [ -f $(PWDIR)/security/passwd.adjunct ]; then ¥ (nawk 'BEGIN { FS=":"; OFS=":" } /^[a-zA-Z0-9_]/ { $$2 = "##" $$1; ¥ printf "%s¥t%s¥n", $$1, $$0 }' $(PWDIR)/passwd $(CHKPIPE)) | ¥ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/passwd.byname; ¥ (nawk 'BEGIN { FS=":"; OFS=":" } /^[a-zA-Z0-9_]/ { $$2 = "##" $$1; ¥ printf "%-10d¥t%s¥n", $$3, $$0 }' $(PWDIR)/passwd $(CHKPIPE)) | ¥ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/passwd.byuid; ¥ elif [ -f $(PWDIR)/shadow ]; then ¥ (nawk 'BEGIN { FS=":"; OFS=":"; while ( getline < "$(PWDIR)/shadow" > 0) ¥ shadow[$$1] = $$2; } /^[a-zA-Z0-9_]/ { $$2 = shadow[$$1]; ¥ printf "%s¥t%s¥n",$$1,$$0 }' $(PWDIR)/passwd $(CHKPIPE))| ¥ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/passwd.byname; ¥ (nawk 'BEGIN { FS=":"; OFS=":"; while ( getline < "$(PWDIR)/shadow" > 0) ¥ shadow[$$1] = $$2; } /^[a-zA-Z0-9_]/ { $$2 = shadow[$$1]; ¥ printf "%-10d¥t%s¥n",$$3,$$0 }' $(PWDIR)/passwd $(CHKPIPE))| ¥ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/passwd.byuid; ¥ else ¥ (awk 'BEGIN { FS=":"; OFS="¥t"; } /^[a-zA-Z0-9_]/ { print $$1, $$0 }' ¥ $(PWDIR)/passwd $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/passwd.byname; ¥ (awk 'BEGIN { FS=":"; OFS="¥t"; } /^[a-zA-Z0-9_]/ { printf("%-10d ", $$3); ¥ print $$0 }' $(PWDIR)/passwd $(CHKPIPE))| $(MAKEDBM) - ¥ $(YPDBDIR)/$(DOM)/passwd.byuid; ¥ fi @touch passwd.time; @echo "updated passwd"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) passwd.byname; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) passwd.byuid; fi @if [ ! $(NOPUSH) ]; then echo "pushed passwd"; fi group.time: $(DIR)/group @(awk 'BEGIN { FS=":"; OFS="¥t"; } /^[a-zA-Z0-9_]/ { print $$1, $$0 }' ¥ $(DIR)/group $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/group.byname; @(awk 'BEGIN { FS=":"; OFS="¥t"; } /^[a-zA-Z0-9_]/ { printf("%-10d ", $$3); ¥ print $$0 }' $(DIR)/group $(CHKPIPE)) | $(MAKEDBM) - ¥ $(YPDBDIR)/$(DOM)/group.bygid; @touch group.time; @echo "updated group"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) group.byname; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) group.bygid; fi @if [ ! $(NOPUSH) ]; then echo "pushed group"; fi ipnodes.time: $(INETDIR)/ipnodes @($(MULTI) -n $(B) -l $(INETDIR)/ipnodes); @($(STDHOSTS) -n $(INETDIR)/ipnodes $(CHKPIPE))| ¥ (awk 'BEGIN { OFS="¥t"; } $$1 !‾ /^#/ { print $$1, $$0 }' $(CHKPIPE)) | ¥ $(MAKEDBM) $(B) - $(YPDBDIR)/$(DOM)/ipnodes.byaddr; @touch ipnodes.time; @echo "updated ipnodes"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) ipnodes.byname; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) ipnodes.byaddr; fi @if [ ! $(NOPUSH) ]; then echo "pushed ipnodes"; fi hosts.time: $(DIR)/hosts @($(MULTI) $(B) -l $(DIR)/hosts); @($(STDHOSTS) $(DIR)/hosts $(CHKPIPE))| ¥ (awk 'BEGIN { OFS="¥t"; } $$1 !‾ /^#/ { print $$1, $$0 }' $(CHKPIPE)) | ¥ $(MAKEDBM) $(B) - $(YPDBDIR)/$(DOM)/hosts.byaddr; @touch hosts.time; @echo "updated hosts"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) hosts.byname; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) hosts.byaddr; fi @if [ ! $(NOPUSH) ]; then echo "pushed hosts"; fi ethers.time: $(DIR)/ethers @($(STDETHERS) $(DIR)/ethers $(CHKPIPE)) ¥ |(awk '{print $$1, $$0; for (i = 3;i <= NF;i++) print $$i,$$0}' $(CHKPIPE)) ¥ | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/ethers.byaddr @(awk 'BEGIN { OFS="¥t"; } $$1 !‾ /^#/ { print $$2, $$0 }' ¥ $(DIR)/ethers $(CHKPIPE)) | ¥ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/ethers.byname; @touch ethers.time; @echo "updated ethers"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) ethers.byname; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) ethers.byaddr; fi @if [ ! $(NOPUSH) ]; then echo "pushed ethers"; fi networks.time: $(DIR)/networks @(sed -e "/^#/d" -e s/#.*$$// $(DIR)/networks $(CHKPIPE)) |( awk ¥ '{print $$1, $$0; for (i = 3;i <= NF;i++) print $$i,$$0}' ¥ $(CHKPIPE) )| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/networks.byname; @(awk 'BEGIN { OFS="¥t"; } $$1 !‾ /^#/ { print $$2, $$0 }' ¥ $(DIR)/networks $(CHKPIPE)) | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/networks.byaddr; @touch networks.time; @echo "updated networks"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) networks.byname; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) networks.byaddr; fi @if [ ! $(NOPUSH) ]; then echo "pushed networks"; fi services.time: $(DIR)/services @(awk 'BEGIN { OFS="¥t"; } $$1 !‾ /^#/ { print $$2, $$0 }' ¥ $(DIR)/services $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/services.byname; @(awk 'BEGIN { OFS="¥t"; } ¥ $$1 !‾ /^#/ { split($$2,pp,"/"); printf("%s/%s %s¥n", $$1, pp[2], $$0);¥ if (seen[$$1] == "") {¥ printf("%s %s¥n", $$1, $$0); seen[$$1]=$$1;} ¥ for (i = 3; i <= NF && $$i !‾ /^#/; i++) ¥ printf("%s/%s %s¥n", $$i, pp[2], $$0)}' ¥ $(DIR)/services $(CHKPIPE)) | ¥ $(MAKEDBM) $(B) - $(YPDBDIR)/$(DOM)/services.byservicename @touch services.time; @echo "updated services"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) services.byname; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) services.byservicename; fi @if [ ! $(NOPUSH) ]; then echo "pushed services"; fi rpc.time: $(DIR)/rpc @(awk 'BEGIN { OFS="¥t"; } $$1 !‾ /^#/ { print $$2, $$0 }' ¥ $(DIR)/rpc $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/rpc.bynumber; @touch rpc.time; @echo "updated rpc"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) rpc.bynumber; fi @if [ ! $(NOPUSH) ]; then echo "pushed rpc"; fi protocols.time: $(DIR)/protocols @(awk 'BEGIN { OFS="¥t"; } $$1 !‾ /^#/ { print $$2, $$0 }' ¥ $(DIR)/protocols $(CHKPIPE)) | $(MAKEDBM) - ¥ $(YPDBDIR)/$(DOM)/protocols.bynumber; @(sed -e "/^#/d" -e s/#.*$$// $(DIR)/protocols $(CHKPIPE)) |( awk ¥ '{print $$1,$$0; for (i = 3;i <= NF;i++) print $$i, $$0}' ¥ $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/protocols.byname; @touch protocols.time; @echo "updated protocols"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) protocols.byname; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) protocols.bynumber; fi @if [ ! $(NOPUSH) ]; then echo "pushed protocols"; fi netgroup.time: $(DIR)/netgroup @$(MAKEDBM) $(DIR)/netgroup $(YPDBDIR)/$(DOM)/netgroup @($(REVNETGROUP) < $(DIR)/netgroup -u $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/netgroup.byuser @($(REVNETGROUP) < $(DIR)/netgroup -h $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/netgroup.byhost @touch netgroup.time; @echo "updated netgroup"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) netgroup; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) netgroup.byuser; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) netgroup.byhost; fi @if [ ! $(NOPUSH) ]; then echo "pushed netgroup"; fi bootparams.time: $(DIR)/bootparams @(sed -e '/^#/d' -e s/#.*$$// -e 's/[ ][ ]*$$//' ¥ -e '/¥¥$$/s/¥¥$$/ /' $(DIR)/bootparams $(CHKPIPE))¥ |( awk '/ $$/ {printf "%s", $$0} !/ $$/ {print}' $(CHKPIPE))¥ |( sed -e 's/[ ][ ]*/ /g' $(CHKPIPE))¥ | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/bootparams; @touch bootparams.time; @echo "updated bootparams"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) bootparams; fi @if [ ! $(NOPUSH) ]; then echo "pushed bootparams"; fi aliases.time: $(ALIASES) @cp $(ALIASES) $(YPDBDIR)/$(DOM)/mail.aliases; @/usr/lib/sendmail -bi -oA$(YPDBDIR)/$(DOM)/mail.aliases; $(MKALIAS) $(YPDBDIR)/$(DOM)/mail.aliases $(YPDBDIR)/$(DOM)/mail.byaddr; @rm $(YPDBDIR)/$(DOM)/mail.aliases; @touch aliases.time; @echo "updated aliases"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) mail.aliases; fi @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) mail.byaddr; fi @if [ ! $(NOPUSH) ]; then echo "pushed aliases"; fi netmasks.time: $(DIR)/netmasks $(MAKEDBM) $(DIR)/netmasks $(YPDBDIR)/$(DOM)/netmasks.byaddr; @touch netmasks.time; @echo "updated netmasks"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) netmasks.byaddr; fi @if [ ! $(NOPUSH) ]; then echo "pushed netmasks"; fi publickey.time: $(DIR)/publickey @(sed "/^#/d" < $(DIR)/publickey $(CHKPIPE))| $(MAKEDBM) - $(YPDBDIR)/$(DOM)/publickey.byname; @touch publickey.time; @echo "updated publickey"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) publickey.byname; fi @if [ ! $(NOPUSH) ]; then echo "pushed publickey"; fi netid.time: $(PWDIR)/passwd $(DIR)/group $(DIR)/hosts $(DIR)/netid @$(MKNETID) -q -p $(PWDIR)/passwd -g $(DIR)/group -h $(DIR)/hosts -m $(DIR)/netid > .ypjunk; @$(MAKEDBM) .ypjunk $(YPDBDIR)/$(DOM)/netid.byname; @rm -f .ypjunk; @touch netid.time; @echo "updated netid"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) netid.byname; fi @if [ ! $(NOPUSH) ]; then echo "pushed netid"; fi # Old way. Could be restored by PSARC decision. # #passwd.adjunct.time: $(PWDIR)/security/passwd.adjunct # @(awk 'BEGIN { FS=":"; OFS="¥t"; } /^[a-zA-Z0-9_]/ { print $$1, $$0 }' $(PWDIR)/security/passwd.adjunct $(CHKPIPE)) | ¥ # $(MAKEDBM) -s - $(YPDBDIR)/$(DOM)/passwd.adjunct.byname; # @chmod 600 $(YPDBDIR)/$(DOM)/passwd.adjunct.byname.dir; # @chmod 600 $(YPDBDIR)/$(DOM)/passwd.adjunct.byname.pag; # @touch passwd.adjunct.time # @echo "updated passwd.adjunct"; # @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) passwd.adjunct.byname; fi # @if [ ! $(NOPUSH) ]; then echo "pushed passwd.adjunct"; fi passwd.adjunct.time: $(PWDIR)/security/passwd.adjunct $(PWDIR)/shadow -@if [ -f $(PWDIR)/shadow ]; then ¥ (nawk 'BEGIN { FS=":"; while (getline < "$(PWDIR)/shadow" > 0) ¥ shadow[$$1] = $$2; } /^[a-zA-Z0-9_]/ { $$2 = shadow[$$1]; OFS=":"; ¥ printf "%s¥t%s¥n", $$1, $$0 }' $(PWDIR)/security/passwd.adjunct $(CHKPIPE)) | ¥ $(MAKEDBM) -s - $(YPDBDIR)/$(DOM)/passwd.adjunct.byname; ¥ else ¥ (awk 'BEGIN { FS=":"; OFS="¥t"; } /^[a-zA-Z0-9_]/ { print $$1, $$0 }' ¥ $(PWDIR)/security/passwd.adjunct $(CHKPIPE)) | ¥ $(MAKEDBM) -s - $(YPDBDIR)/$(DOM)/passwd.adjunct.byname; ¥ fi @chmod 600 $(YPDBDIR)/$(DOM)/passwd.adjunct.byname.dir; @chmod 600 $(YPDBDIR)/$(DOM)/passwd.adjunct.byname.pag; @touch passwd.adjunct.time @echo "updated passwd.adjunct"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) passwd.adjunct.byname; fi @if [ ! $(NOPUSH) ]; then echo "pushed passwd.adjunct"; fi group.adjunct.time: $(PWDIR)/security/group.adjunct @(awk 'BEGIN { FS=":"; OFS="¥t"; } /^[a-zA-Z0-9_]/ { print $$1, $$0 }' $(PWDIR)/security/group.adjunct $(CHKPIPE)) | ¥ $(MAKEDBM) -s - $(YPDBDIR)/$(DOM)/group.adjunct.byname; @chmod 600 $(YPDBDIR)/$(DOM)/group.adjunct.byname.dir; @chmod 600 $(YPDBDIR)/$(DOM)/group.adjunct.byname.pag; @touch group.adjunct.time @echo "updated group.adjunct"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) group.adjunct.byname; fi @if [ ! $(NOPUSH) ]; then echo "pushed group.adjunct"; fi timezone.time: $(DIR)/timezone -@if [ -f $(DIR)/timezone ]; then ¥ sed -e "/^#/d" -e s/#.*$$// $(DIR)/timezone ¥ | awk '{for (i = 2; i<=NF; i++) print $$i, $$0}' ¥ | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/timezone.byname; ¥ touch timezone.time; ¥ echo "updated timezone"; ¥ if [ ! $(NOPUSH) ]; then ¥ $(YPPUSH) timezone.byname; ¥ echo "pushed timezone"; ¥ else ¥ : ; ¥ fi ¥ else ¥ echo "couldn't find $(DIR)/timezone"; ¥ fi auto.master.time: $(DIR)/auto_master -@if [ -f $(DIR)/auto_master ]; then ¥ sed -e "/^#/d" -e s/#.*$$// $(DIR)/auto_master ¥ | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/auto.master; ¥ touch auto.master.time; ¥ echo "updated auto.master"; ¥ if [ ! $(NOPUSH) ]; then ¥ $(YPPUSH) auto.master; ¥ echo "pushed auto.master"; ¥ else ¥ : ; ¥ fi ¥ else ¥ echo "couldn't find $(DIR)/auto_master"; ¥ fi auto.home.time: $(DIR)/auto_home -@if [ -f $(DIR)/auto_home ]; then ¥ sed -e "/^#/d" -e s/#.*$$// $(DIR)/auto_home ¥ | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/auto.home; ¥ touch auto.home.time; ¥ echo "updated auto.home"; ¥ if [ ! $(NOPUSH) ]; then ¥ $(YPPUSH) auto.home; ¥ echo "pushed auto.home"; ¥ else ¥ : ; ¥ fi ¥ else ¥ echo "couldn't find $(DIR)/auto_home"; ¥ fi auth.attr.time: $(DIR)/auth_attr -@if [ -f $(DIR)/auth_attr ]; then ¥ sed -e "/^#/d" -e s/#.*$$// $(DIR)/auth_attr ¥ |sed -e '/¥¥$$/{:l' -e 'N;s/¥¥¥n//;t h' -e ':h' ¥ -e 's/¥¥$$/¥¥/;t l' -e } ¥ | (nawk 'BEGIN { FS=":"; OFS=":" } /^[a-zA-Z0-9_]/ ¥ {printf "%s:%s¥n", $$1, $$0 }' $(CHKPIPE)) ¥ | $(MAKEDBM) -S ":" -E - $(YPDBDIR)/$(DOM)/auth_attr; ¥ touch auth.attr.time; ¥ echo "updated auth_attr"; ¥ if [ ! $(NOPUSH) ]; then ¥ $(YPPUSH) auth_attr; ¥ echo "pushed auth_attr"; ¥ else ¥ : ; ¥ fi ¥ else ¥ echo "couldn't find $(DIR)/auth_attr"; ¥ fi exec.attr.time: $(DIR)/exec_attr -@if [ -f $(DIR)/exec_attr ]; then ¥ sed -e "/^#/d" -e s/#.*$$// $(DIR)/exec_attr ¥ |sed -e '/¥¥$$/{:l' -e 'N;s/¥¥¥n//;t h' -e ':h' ¥ -e 's/¥¥$$/¥¥/;t l' -e } ¥ | (nawk 'BEGIN { FS=":"; OFS=":" } /^[a-zA-Z0-9_]/ ¥ {printf "%s:%s:%s¥n", ¥ $$1, $$6, $$0 }' $(CHKPIPE)) ¥ | $(MAKEDBM) -S ":" -E -D 1 - $(YPDBDIR)/$(DOM)/exec_attr; ¥ touch exec.attr.time; ¥ echo "updated exec_attr"; ¥ if [ ! $(NOPUSH) ]; then ¥ $(YPPUSH) exec_attr; ¥ echo "pushed exec_attr"; ¥ else ¥ : ; ¥ fi ¥ else ¥ echo "couldn't find $(DIR)/exec_attr"; ¥ fi prof.attr.time: $(DIR)/prof_attr -@if [ -f $(DIR)/prof_attr ]; then ¥ sed -e "/^#/d" -e s/#.*$$// $(DIR)/prof_attr ¥ |sed -e '/¥¥$$/{:l' -e 'N;s/¥¥¥n//;t h' -e ':h' ¥ -e 's/¥¥$$/¥¥/;t l' -e } ¥ | (nawk 'BEGIN { FS=":"; OFS=":" } /^[a-zA-Z0-9_]/ ¥ {printf "%s:%s¥n", $$1, $$0 }' $(CHKPIPE)) ¥ | $(MAKEDBM) -S ":" -E - $(YPDBDIR)/$(DOM)/prof_attr; ¥ touch prof.attr.time; ¥ echo "updated prof_attr"; ¥ if [ ! $(NOPUSH) ]; then ¥ $(YPPUSH) prof_attr; ¥ echo "pushed prof_attr"; ¥ else ¥ : ; ¥ fi ¥ else ¥ echo "couldn't find $(DIR)/prof_attr"; ¥ fi user.attr.time: $(DIR)/user_attr -@if [ -f $(DIR)/user_attr ]; then ¥ sed -e "/^#/d" -e s/#.*$$// $(DIR)/user_attr ¥ |sed -e '/¥¥$$/{:l' -e 'N;s/¥¥¥n//;t h' -e ':h' ¥ -e 's/¥¥$$/¥¥/;t l' -e } ¥ | (nawk 'BEGIN { FS=":"; OFS=":" } /^[a-zA-Z0-9_]/ ¥ {printf "%s:%s¥n", $$1, $$0 }' $(CHKPIPE)) ¥ | $(MAKEDBM) -S ":" -E - $(YPDBDIR)/$(DOM)/user_attr; ¥ touch user.attr.time; ¥ echo "updated user_attr"; ¥ if [ ! $(NOPUSH) ]; then ¥ $(YPPUSH) user_attr; ¥ echo "pushed user_attr"; ¥ else ¥ : ; ¥ fi ¥ else ¥ echo "couldn't find $(DIR)/user_attr"; ¥ fi audit.user.time: $(DIR)/audit_user -@if [ -f $(DIR)/audit_user ]; then ¥ sed -e "/^#/d" -e s/#.*$$// $(DIR)/audit_user ¥ |sed -e '/¥¥$$/{:l' -e 'N;s/¥¥¥n//;t h' -e ':h' ¥ -e 's/¥¥$$/¥¥/;t l' -e } ¥ | (nawk 'BEGIN { FS=":"; OFS="¥t" } /^[a-zA-Z0-9_]/ ¥ {print $$1, $$0 }' $(CHKPIPE)) ¥ | $(MAKEDBM) -s - $(YPDBDIR)/$(DOM)/audit_user; ¥ touch audit.user.time; ¥ echo "updated audit_user"; ¥ if [ ! $(NOPUSH) ]; then ¥ $(YPPUSH) audit_user; ¥ echo "pushed audit_user"; ¥ else ¥ : ; ¥ fi ¥ else ¥ echo "couldn't find $(DIR)/audit_user"; ¥ fi passwd: passwd.time group: group.time hosts: hosts.time ipnodes: ipnodes.time ethers: ethers.time networks: networks.time rpc: rpc.time services: services.time protocols: protocols.time netgroup: netgroup.time bootparams: bootparams.time aliases: aliases.time publickey: publickey.time netid: netid.time passwd.adjunct: passwd.adjunct.time group.adjunct: group.adjunct.time netmasks: netmasks.time timezone: timezone.time auto.master: auto.master.time auto.home: auto.home.time auth.attr:auth.attr.time exec.attr:exec.attr.time prof.attr:prof.attr.time user.attr:user.attr.time audit.user:audit.user.time $(DIR)/netid: $(DIR)/timezone: $(DIR)/auto_master: $(DIR)/auto_home: $(PWDIR)/shadow: $(DIR)/auth_attr: $(DIR)/exec_attr: $(DIR)/prof_attr: $(DIR)/user_attr: $(DIR)/audit_user: |
Makefile は、all の下にリストされるデータベースのそれぞれに対して、適切な NIS マップを作成します。データは、makedbm で処理され、mapname.dir と mapname.pag の 2 つのファイルに保存されます。この両方はマスターサーバーの /var/yp/domainname ディレクトリに置かれます。
Makefile は、/PWDIR/passwd、/PWDIR/shadow、/PWDIR/security/passwd.adjunct ファイルから passwd マップを適宜作成します。
/usr/sbin/ypinit シェルは、マスターサーバー、スレーブサーバー、クライアントが NIS を使用するように設定します。また最初に make を実行して、マスターサーバー上にマップを作成します。
ypinit を使用して、新規に NIS マップをマスターサーバーに構築するには、次の手順に従います。
マスターサーバーの root になって、確実にネームサービスで NIS ではなく /etc ファイルから情報を得るようにします。次のように入力します。
# cp /etc/nsswitch.files /etc/nsswitch.conf |
/etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを編集して、NIS サーバーのそれぞれの名前と IP アドレスを追加します。
次のように入力して、新しいマップをマスターサーバーで構築します。
# /usr/sbin/ypinit -m |
ypinit は、NIS スレーブサーバーになる他のマシンの入力を要求します。作業中のサーバー名と NIS スレーブサーバー名を入力します。
致命的ではないエラーが発生したときすぐに手続きを終了するか、または致命的ではないエラーが発生しても継続するかを ypinit が問い合わせます。y を入力します。
y を選択すると、ypinit は最初の問題が発生すると終了します。問題を解決して、ypinit を再開できます。ypinit を最初に実行する場合には、この手順を実行するようにしてください。継続する場合には、発生する問題をすべて手作業で解決してから、ypinit を再度実行します。
マップファイルの一部が存在しない場合に、致命的ではないエラーが表示されることがあります。これは NIS の機能に影響するエラーではありません。自動的に作成されない場合には、マップを手作業で追加できます。デフォルトの NIS マップすべての説明は表 10-3 を参照してください。
ypinit が、/var/yp/domainname ディレクトリ内の既存のファイルを破棄してもよいかを問い合わせます。
このメッセージは、NIS が以前に設定されている場合にだけ表示されます。これに yes と回答して、NIS の新しいマップを設定します。
いったんサーバーのリストを構築すると、ypinit は make を起動します。
# make |
このプログラムは、/var/yp に置かれる Makefile (デフォルトまたは修正されたもの) に含まれる命令を使用します。make コマンドは、指定したファイルにコメント行があれば、それを取り除き、それに対して makedbm を実行します。適切なマップを作成して、各マップにマスターサーバー名を設定します。
マスターサーバー上で domainname コマンドを実行した時に返されるドメイン名以外のドメイン用のマップの転送が Makefile で行われる場合、次のように ypinit シェルスクリプト中で起動される make コマンドに適切なドメイン名を変数 DOM
で指定することで、確実にマップが正しいドメインに転送されるようにすることができます。
# make DOM=domainname password |
これは password マップを、マスターサーバーが属するドメインではなく目的のドメインに転送します。
次のように入力して、ネームサービスとして NIS を使用します。
# cp /etc/nsswitch.nis /etc/nsswitch.conf |
これは、現在のスイッチファイルをデフォルトの NIS 用スイッチファイルに置き換えます。このファイルは必要に応じて編集可能です。
通常 NIS マスターサーバーは、NIS ドメインだけをサポートします。しかしマスターサーバーを使用して、複数のドメインをサポートする場合には、追加ドメイン用にサーバーを設定する際に、前述の節で説明した手順を若干修正する必要があります。
サーバー上で domainname コマンドを実行します。コマンドが戻すドメイン名は、サーバーのデフォルトドメインです。前述の節で説明した手順は、そのドメインへのサービスの設定では正しく機能します。他のドメインに対してサービスを構成するには、ypinit シェルスクリプトを次のように修正する必要があります。
# make DOM=correct-domain passwd |
correct-domain は、サービスを設定している他のドメインの名前であり、passwd は make ターゲットです。このコマンドは password マップを、マスターサーバーが属するドメインではなく目的のドメインに転送します。
マスターマップが作成されると、NIS デーモンをマスターサーバーで起動して、サービスを開始できます。これを行うには、ypserv をサーバー上で起動して、ypbind を実行する必要があります。クライアントがサーバーに情報を要求すると、ypserv デーモンは NIS マップ内で検索し、クライアントからの情報の要求に対応します。
サーバー上で NIS サービスを起動するには 2 つの方法があります。
ypinit の実行による NIS マスターサーバーの構成後、マシンのブート時に ypstart が自動的に起動され、ypserv を起動します (「ypinit によるマスターサーバーの設定」を参照)。
NIS サービスをコマンド行から開始するには、以下を実行します。
# /usr/lib/netsvc/yp/ypstart |
起動後に ypserv が呼び出しに応答できるようになるまでに若干の遅延があります。プログラムまたはスクリプトの内部から呼び出す場合には、ypstart の実行後に 3 秒から 5 秒間スリープ状態にしてください。
Solaris 8 リリースでは、/etc/resolv.conf ファイルがある場合には、ypstart は DNS の転送を使用するように ypserv を起動します。DNS の転送を使用しない場合には、/usr/lib/netsvc/yp/ypstart スクリプトを編集して、-d オプションを ypserv コマンドから削除します。その後マシンをリブートする必要があります。
DNS での NIS の使用については、第 13 章「DNS サーバーの設定」と『Solaris ネーミングの管理』を参照してください。
NIS を停止するには、ypstop コマンドを実行します。
# /usr/lib/netsvc/yp/ypstop |
ネットワークは 1 つ以上のスレーブサーバーを持つことができます。スレーブサーバーを持つことで、マスターサーバーが利用できない場合にも NIS サービスを継続して確保できます。
ypinit を実際に実行して、スレーブサーバーを作成する前に、domainname コマンドを NIS スレーブごとに実行して、ドメイン名がマスターサーバーと一致していることを確認します。
ドメイン名は大文字と小文字を区別します。
ネットワークが適切に機能していることを確認してから、NIS スレーブサーバーを構成してください。特に、rcp を使用して NIS のマスターサーバーから NIS スレーブサーバーにファイルを送れるかを確認してください。
タスク |
説明 |
指示の参照先 | |||||
---|---|---|---|---|---|---|---|
NIS スレーブサーバー |
NIS スレーブサーバー | ||||||
|
|
マスターサーバー上での NIS サービスの開始後、次のように新しいスレーブサーバーを作成できます。
root として、スレーブサーバー上で /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを編集して、他のすべての NIS サーバー名と IP アドレスを追加します。
次のように入力して、スレーブサーバーにするマシンをクライアントとして初期化します。
# /usr/sbin/ypinit -c |
ypinit コマンドが、NIS サーバーのリストの入力を促します。作業中のローカルマシン (スレーブ) の名前を最初に入力してからマスターサーバーを入力し、その後にドメイン内の他の NIS スレーブサーバーをネットワーク的に近いものから遠いものの順番で入力します。
スレーブサーバーにするマシンを最初に NIS クライアントとして構成して、マスターサーバーから最初に NIS マップを得ることができるようにします (詳細は、「NIS クライアントの設定」を参照)。
ypbind が実行中かどうかを判断するには、次のように入力します。
# ps -ef | grep ypbind |
リストが表示されたら、ypbind は実行中です。
ypbind が実行中なら、次のように入力して停止します。
# /usr/lib/netsvc/yp/ypstop |
次のように入力して、ypbind を再開します。
# /usr/lib/netsvc/yp/ypstart |
次のように入力して、このマシンをスレーブとして初期化します。
# /usr/sbin/ypinit -s master |
この場合 master は、既存の NIS マスターサーバーのマシン名です。
この節で説明した手順を、NIS スレーブサーバーとして構成するマシンごとに繰り返します。
これでスレーブサーバーでデーモンを開始して、NIS サービスを開始できます。次のとおりに入力して、既存のすべての yp プロセスを停止する必要があります。
# /usr/lib/netsvc/yp/ypstop |
スレーブサーバーで ypserv を開始して ypbind を実行するには、次のとおりに入力します。
# /usr/lib/netsvc/yp/ypstart |
これとは別に、スレーブサーバーをリブートして、デーモンを自動的に開始することもできます。
次の 2 つの手続きを実行して、NIS をマシンで使用できるようにします。
第 1 章「ネームサービススイッチの設定」で説明したように、nsswitch.conf ファイルを正しく設定する
NIS を使用するマシンを次に説明するとおりに構成する
以下にネームサービスとして NIS を使用するマシンを構成する方法を 2 通り説明します。
NIS サーバー (クライアントはそこからネームサービス情報を得る) を指定するように要求されます。必要なだけマスターサーバーやスレーブサーバーを指定できます。指定するサーバーはドメイン内のどこにあってもかまいません。クライアントにネットワーク的に近いサーバーから遠いサーバーの順に指定することをお勧めします。
「ブロードキャスト方式」
NIS のクライアントマシンを構成する古い方式です。マシンに root としてログインし、domainname コマンドでドメイン名を設定してから、ypbind を実行します。
# domainname doc.com # ypbind -broadcast |
ypbind を実行すると、NIS サーバーをローカルサブネットで探して、見つかれば接続します。この検索を「ブロードキャスト」と呼びます。クライアントのローカルサブネットに NIS サーバーがない場合には接続されず、クライアントマシンは NIS サービスから名前空間データを得ることができません。
NIS が使用する名前空間データは、NIS マップ群に格納されます。本質的に NIS マップは、2 つの列で構成される表です。
表 10-3 は、デフォルトの NIS マップ、それに含まれる情報、NIS の実行中に対応する管理ファイルをオペレーティングシステムが参照するかどうかを説明します。
表 10-3 NIS マップの説明
マップ名 |
対応する NIS 管理ファイル |
説明 |
---|---|---|
bootparams |
bootparams |
クライアントがブート中に必要とするファイルのパス名を含む。root、swap など |
ethers.byaddr |
ethers |
マシン名と Ethernet アドレスを含む。Ethernet アドレスはマップ内のキー |
ethers.byname |
ethers |
キーが Ethernet アドレスではなくマシン名であることを除けば ethers.byaddr と同じ |
group.bygid |
group |
グループ ID をキーとしてグループセキュリティ情報を含む |
group.byname |
group |
グループ名をキーとしてグループセキュリティ情報を含む |
hosts.byaddr |
hosts |
IPv4 アドレスをキーとしてマシン名と IPv4 アドレスを含む |
hosts.byname |
hosts |
マシン (ホスト) 名をキーとしてマシン名と IPv4 アドレスを含む |
ipnodes.byaddr |
ipnodes |
IP アドレスをキーとしてマシン名と IP アドレス ( IPv4 および IPv6 アドレスの両方) を含む |
ipnodes.byname |
ipnodes |
マシン (ホスト) 名をキーとしてマシン名と IP アドレス ( IPv4 および IPv6 アドレスの両方) を含む |
mail.aliases |
aliases |
エイリアスをキーとしてエイリアスとメールアドレスを含む |
mail.byaddr |
aliases |
メールアドレスをキーとしてメールアドレスとエイリアスを含む |
netgroup.byhost |
netgroup |
マシン (ホスト名) をキーとして、グループ名、ユーザー名、マシン名を含む |
netgroup.byuser |
netgroup |
キーがユーザー名であることを除くと netgroup.byhost と同じ |
netgroup |
netgroup |
キーがグループ名であることを除くと netgroup.byhost と同じ |
netid.byname |
passwd, hosts, group |
UNIX 形式の認証に使用。ネット名のデータベースを含む。netid ファイルがある場合には、他のファイルを使用して利用できるデータの他にそれが参照される |
netmasks.byaddr |
netmasks |
アドレスをキーとして、IP のサブネット化で使用されるマスクを含む |
networks.byaddr |
networks |
アドレスをキーとして、システムに対して既知のネットワーク名とアドレスを含む |
networks.byname |
networks |
キーがネットワーク名であることを除くと、networks.byaddr と同じ |
passwd.adjunct. byname |
passwd と shadow |
C2 クライアント用の監査情報と隠蔽されたパスワード情報を含む |
passwd.byname |
passwd と shadow |
ユーザー名をキーとして、パスワード情報を含む |
passwd.byuid |
passwd と shadow |
キーがユーザー ID であることを除くと passwd.byname と同じ |
protocols.byname |
protocols |
プロトコル名をキーとして、システムに対して既知のネットワークプロトコルを含む |
protocols.bynumber |
protocols |
キーがプロトコル番号であることを除くと、protocols.byname と同じ |
rpc.bynumber |
rpc |
システムに対して既知のプログラム番号と RPC の名前を含む。キーは RPC のプログラム番号 |
services.byname |
services |
ネットワークに対して既知のインターネットサービスをリストする。キーはポートとプロトコル |
services.byservice |
services |
ネットワークに対して既知のインターネットサービスをリスト |
ypservers |
なし |
ネットワークに対して既知の NIS サーバーをリスト |
作成後の NIS マップの修正については、『Solaris ネーミングの管理』を参照してください。
NIS の管理、問題解決、エラーメッセージの詳細は、『Solaris ネーミングの管理』を参照してください。