Solaris ネーミングの設定と構成

パート III NIS の設定と構成

パート III では NIS (Network Information Service) サービスの設定と構成の方法を説明します。次の 1 つの章で構成されます。

第 10 章 NIS サービスの構成

この章では、NIS (Network Information Service) の初期設定と構成を説明します。

NIS の一般的な説明と概要については、『Solaris ネーミングの管理』を参照してください。

Solaris 8 オペレーティング環境の NIS

次の NIS の機能は新規のものか、または Solaris 8 オペレーティング環境で変更されました。

NIS と IPv6

新しい ipnodes マップ (ipnodes.byaddr および ipnodes.byname) が、NIS に追加されました。これらのマップは、 IPv4 および IPv6 の両方のアドレスを格納しています (ipnodes(4)のマニュアルページを参照).。NIS クライアントとサーバーは、IPv4 または IPv6 のどちらかの RPC トランスポートを使用して通信することができます。

NIS の構成を始める前に

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 -Sdomainname コマンドに使用されます。ディスクレスマシンはブートサーバーからファイルを読み取ります。

NIS サーバーの選択

NIS サーバーになるマシンを決定します。マスターサーバーになるマシン (後で変更可能) を 1 つ選択します。スレーブサーバーを作る場合には、それを決定します (NIS と NIS の条件の概要については、『Solaris ネーミングの管理』を参照)。

NIS クライアントマシンの選択

NIS クライアントになるマシンを決定します。一般的には、ドメイン内のすべてのマシンは NIS クライアントになるように設定されますが、これは必須ではありません。

NIS の構成手順

Solaris 8 リリースソフトウェアのインストール、nsswitch.conf ファイルの設定、ドメインの計画が終わったら、次の NIS の構成手順を実行する必要があります。

  1. マスターサーバーの準備をする (「マスターサーバーの準備」を参照

  2. NIS のマスターサーバーを構成する (ypinit によるマスターサーバーの設定」を参照)

  3. マスターサーバーで NIS デーモンを起動する (「マスターサーバー上での NIS サービスの開始」を参照)

  4. スレーブサーバーを構成する (「NIS スレーブサーバーの設定」を参照)

  5. NIS クライアントマシンを構成する (「NIS クライアントの設定」を参照)


注 -

文脈によっては、「マシン」名は「ホスト」名や「ワークステーション」名と呼ばれる場合があります。この節では「マシン」を使用しますが、画面メッセージや NIS マップ名によっては、「ホスト」や「ワークステーション」を使用する場合があります。


次の節ではこれら手順の詳細を説明します。

マスターサーバーの準備

マスターサーバーの設定では、マスターサーバーの情報源 (入力テキストファイル) の NIS マスターサーバーマップへの変換が必要です。これを行う前にすべき準備があります。

入力ファイルディレクトリ

入力ファイルはマスターサーバーの /etc ディレクトリか、その他のディレクトリに置かれます。/etc に置くのは望ましくありません。マップの内容が、マスターサーバーのローカルファイルの内容と同じになるからです。これは passwdshadow のファイルに特有の問題です。ユーザー全員がマスターサーバーのマップにアクセスして、passwd マップを通じて YP クライアントのすべてに root のパスワードが渡されるためです。この詳細は、「passwd ファイルと名前空間のセキュリティ」を参照してください。

他のディレクトリにソースファイルを置く場合に、your-choice がソースファイルの格納に使用するディレクトリの名前であるときは、/var/yp 内の Makefile を修正して、DIR=/etc 行を DIR=/your-choice に変更する必要があります。これによって、クライアント上のファイルのようにサーバー上のローカルファイルを取り扱うことができます。Makefile を編集する前に、編集前の Makefile を別の名前のファイルに保存しておくことをお勧めします。

passwd ファイルと名前空間のセキュリティ

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 (パスワードマクロ) を変更して、passwdshadow のファイルのあるディレクトリを参照するようにします。passwd マップ入力ファイルの格納に使用するディレクトリ名が your-choice の場合には、PWDIR=/etc の行を PWDIR=/your-choice に変更します。


注意 - 注意 -

ディレクトリ内で PWDIR によって指定された passwd ファイルに root に対するエントリが含まれないようにしてください。


マスターサーバーの準備 - タスクマップ

表 10-1 マスターサーバーの準備
 

タスク 

 

説明 

 

指示の参照先 

 
 

マスターサーバーの準備 

 

NIS マップへのファイルの変換 

 

「NIS マップへの変換用ソースファイルの準備」

 
 

マスターサーバーの準備 

   

ypinit を使用して設定する

   

ypinit によるマスターサーバーの設定」

 
       

NIS マップへの変換用ソースファイルの準備

NIS マップへの変換用の入力ファイルを準備します。

  1. マスターサーバーの入力ファイルを確認して、システム環境の最新の状態が反映されていることを確認します。

    次のファイルを確認します。

    • auto.home または auto_home

    • auto.master または auto_master

    • bootparams

    • ethers

    • group

    • hosts

    • ipnodes

    • netgroup

    • netmasks

    • networks

    • passwd

    • protocols

    • rpc

    • services

    • shadow

  2. passwd 以外のこれら入力ファイルのすべてを、選択した DIR ディレクトリにコピーします。

  3. passwd ファイルを選択した PWDIR ディレクトリにコピーします。

  4. /etc/mail/aliases ファイルを確認します。

    他の入力ファイルと異なり、/etc/mail/aliases ファイルは別のディレクトリに移動できません。このファイルは /etc/mail ディレクトリになければなりません。ドメイン全体で利用しようとするメールエイリアスがすべて含まれていることを検証して、/etc/mail/aliases ファイルが完全なことを確認します。詳細は、aliases(4) のマニュアルページを参照してください。

  5. 入力ファイルからすべてのコメント、その他の余計な行や情報を取り除きます。

    これら操作は、sed または awk のスクリプトを通じて、またはテキストエディタを使用して行えます。Makefile は入力ファイルから不要なエントリをある程度自動的に削除しますが、手作業で検証し、取り除いてから、実行するようにしてください。

  6. すべての入力ファイルのデータが正しい形式になっていることを確認します。

    入力ファイルのデータは、それぞれのファイル用の形式になっている必要があります。該当するマニュアルページを参照して、各ファイルが正しい形式になっていることを確認します。

Makefile の準備

入力ファイルを確認して、それを入力ファイルディレクトリにコピーした後に、NIS サービスが使用する ndbm 形式のマップに、その入力ファイルを変換する必要があります。ypinit によるマスターサーバーの設定」の節で説明するとおり、これはマスターサーバーで ypinit が実行されると自動的に行われます。

ypinit スクリプトは、プログラム make を呼び出します。このプログラムは、/var/yp ディレクトリに置かれた Makefile を使用します。例 10-1 のようなデフォルトの Makefile が、/var/yp ディレクトリで提供されます。この Makefile は、入力ファイルの ndbm 形式マップへの変換に必要なコマンドを含みます。

Makefile はそのまま使用でき、必要なら修正もできます。デフォルトの Makefile を修正するときは、将来必要な場合に備えて最初にオリジナルのデフォルト Makefile をコピーして格納してください。次の Makefile への修正のうちの 1 つまたは複数を実行する必要がある場合があります。


例 10-1 修正前のデフォルトの Makefile


#
# 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.dirmapname.pag の 2 つのファイルに保存されます。この両方はマスターサーバーの /var/yp/domainname ディレクトリに置かれます。

Makefile は、/PWDIR/passwd/PWDIR/shadow/PWDIR/security/passwd.adjunct ファイルから passwd マップを適宜作成します。

ypinit によるマスターサーバーの設定

/usr/sbin/ypinit シェルは、マスターサーバー、スレーブサーバー、クライアントが NIS を使用するように設定します。また最初に make を実行して、マスターサーバー上にマップを作成します。

ypinit を使用して、新規に NIS マップをマスターサーバーに構築するには、次の手順に従います。

  1. マスターサーバーの root になって、確実にネームサービスで NIS ではなく /etc ファイルから情報を得るようにします。次のように入力します。


    # cp /etc/nsswitch.files /etc/nsswitch.conf
    

  2. /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを編集して、NIS サーバーのそれぞれの名前と IP アドレスを追加します。

  3. 次のように入力して、新しいマップをマスターサーバーで構築します。


    # /usr/sbin/ypinit -m
    

  4. ypinit は、NIS スレーブサーバーになる他のマシンの入力を要求します。作業中のサーバー名と NIS スレーブサーバー名を入力します。

  5. 致命的ではないエラーが発生したときすぐに手続きを終了するか、または致命的ではないエラーが発生しても継続するかを ypinit が問い合わせます。y を入力します。

    y を選択すると、ypinit は最初の問題が発生すると終了します。問題を解決して、ypinit を再開できます。ypinit を最初に実行する場合には、この手順を実行するようにしてください。継続する場合には、発生する問題をすべて手作業で解決してから、ypinit を再度実行します。


    注 -

    マップファイルの一部が存在しない場合に、致命的ではないエラーが表示されることがあります。これは NIS の機能に影響するエラーではありません。自動的に作成されない場合には、マップを手作業で追加できます。デフォルトの NIS マップすべての説明は表 10-3 を参照してください。


  6. ypinit が、/var/yp/domainname ディレクトリ内の既存のファイルを破棄してもよいかを問い合わせます。

    このメッセージは、NIS が以前に設定されている場合にだけ表示されます。これに yes と回答して、NIS の新しいマップを設定します。

  7. いったんサーバーのリストを構築すると、ypinitmake を起動します。


    # make
    

    このプログラムは、/var/yp に置かれる Makefile (デフォルトまたは修正されたもの) に含まれる命令を使用します。make コマンドは、指定したファイルにコメント行があれば、それを取り除き、それに対して makedbm を実行します。適切なマップを作成して、各マップにマスターサーバー名を設定します。

    マスターサーバー上で domainname コマンドを実行した時に返されるドメイン名以外のドメイン用のマップの転送が Makefile で行われる場合、次のように ypinit シェルスクリプト中で起動される make コマンドに適切なドメイン名を変数 DOM で指定することで、確実にマップが正しいドメインに転送されるようにすることができます。


    # make DOM=domainname password
    

    これは password マップを、マスターサーバーが属するドメインではなく目的のドメインに転送します。

  8. 次のように入力して、ネームサービスとして NIS を使用します。


    # cp /etc/nsswitch.nis /etc/nsswitch.conf
    

    これは、現在のスイッチファイルをデフォルトの NIS 用スイッチファイルに置き換えます。このファイルは必要に応じて編集可能です。

複数の NIS ドメインをサポートするマスターサーバー

通常 NIS マスターサーバーは、NIS ドメインだけをサポートします。しかしマスターサーバーを使用して、複数のドメインをサポートする場合には、追加ドメイン用にサーバーを設定する際に、前述の節で説明した手順を若干修正する必要があります。

サーバー上で domainname コマンドを実行します。コマンドが戻すドメイン名は、サーバーのデフォルトドメインです。前述の節で説明した手順は、そのドメインへのサービスの設定では正しく機能します。他のドメインに対してサービスを構成するには、ypinit シェルスクリプトを次のように修正する必要があります。


# make DOM=correct-domain passwd

correct-domain は、サービスを設定している他のドメインの名前であり、passwdmake ターゲットです。このコマンドは password マップを、マスターサーバーが属するドメインではなく目的のドメインに転送します。

マスターサーバー上での NIS サービスの開始

マスターマップが作成されると、NIS デーモンをマスターサーバーで起動して、サービスを開始できます。これを行うには、ypserv をサーバー上で起動して、ypbind を実行する必要があります。クライアントがサーバーに情報を要求すると、ypserv デーモンは NIS マップ内で検索し、クライアントからの情報の要求に対応します。

サーバー上で NIS サービスを起動するには 2 つの方法があります。

NIS サービスの自動スタート

ypinit の実行による NIS マスターサーバーの構成後、マシンのブート時に ypstart が自動的に起動され、ypserv を起動します (ypinit によるマスターサーバーの設定」を参照)。

コマンド行からの NIS の開始

NIS サービスをコマンド行から開始するには、以下を実行します。


# /usr/lib/netsvc/yp/ypstart


注 -

起動後に ypserv が呼び出しに応答できるようになるまでに若干の遅延があります。プログラムまたはスクリプトの内部から呼び出す場合には、ypstart の実行後に 3 秒から 5 秒間スリープ状態にしてください。


DNS の転送

Solaris 8 リリースでは、/etc/resolv.conf ファイルがある場合には、ypstart は DNS の転送を使用するように ypserv を起動します。DNS の転送を使用しない場合には、/usr/lib/netsvc/yp/ypstart スクリプトを編集して、-d オプションを ypserv コマンドから削除します。その後マシンをリブートする必要があります。

DNS での NIS の使用については、第 13 章「DNS サーバーの設定」と『Solaris ネーミングの管理』を参照してください。

ypstop による NIS の停止

NIS を停止するには、ypstop コマンドを実行します。


# /usr/lib/netsvc/yp/ypstop

NIS スレーブサーバーの設定

ネットワークは 1 つ以上のスレーブサーバーを持つことができます。スレーブサーバーを持つことで、マスターサーバーが利用できない場合にも NIS サービスを継続して確保できます。

スレーブサーバーの準備

ypinit を実際に実行して、スレーブサーバーを作成する前に、domainname コマンドを NIS スレーブごとに実行して、ドメイン名がマスターサーバーと一致していることを確認します。


注 -

ドメイン名は大文字と小文字を区別します。


ネットワークが適切に機能していることを確認してから、NIS スレーブサーバーを構成してください。特に、rcp を使用して NIS のマスターサーバーから NIS スレーブサーバーにファイルを送れるかを確認してください。

NIS スレーブサーバーの設定 - タスクマップ

表 10-2 NISスレーブサーバーの設定
 

タスク 

 

説明 

 

指示の参照先 

 
 

NIS スレーブサーバー 

 

NIS スレーブサーバー 

 

「スレーブサーバーの設定」

 
 

 

 

 

   

スレーブサーバーの設定

マスターサーバー上での NIS サービスの開始後、次のように新しいスレーブサーバーを作成できます。

  1. root として、スレーブサーバー上で /etc/hosts ファイルまたは /etc/inet/ipnodes ファイルを編集して、他のすべての NIS サーバー名と IP アドレスを追加します。

  2. スレーブサーバー上の /var/yp にディレクトリを変更します。

  3. 次のように入力して、スレーブサーバーにするマシンをクライアントとして初期化します。


    # /usr/sbin/ypinit -c
    

    ypinit コマンドが、NIS サーバーのリストの入力を促します。作業中のローカルマシン (スレーブ) の名前を最初に入力してからマスターサーバーを入力し、その後にドメイン内の他の NIS スレーブサーバーをネットワーク的に近いものから遠いものの順番で入力します。


    注 -

    スレーブサーバーにするマシンを最初に NIS クライアントとして構成して、マスターサーバーから最初に NIS マップを得ることができるようにします (詳細は、「NIS クライアントの設定」を参照)。


  4. ypbind が実行中かどうかを判断するには、次のように入力します。


    # ps -ef | grep ypbind
    

    リストが表示されたら、ypbind は実行中です。

  5. ypbind が実行中なら、次のように入力して停止します。


    # /usr/lib/netsvc/yp/ypstop
    

  6. 次のように入力して、ypbind を再開します。


    # /usr/lib/netsvc/yp/ypstart
    

  7. 次のように入力して、このマシンをスレーブとして初期化します。


    # /usr/sbin/ypinit -s master
    

    この場合 master は、既存の NIS マスターサーバーのマシン名です。

    この節で説明した手順を、NIS スレーブサーバーとして構成するマシンごとに繰り返します。

スレーブサーバー上での NIS サービスの開始

これでスレーブサーバーでデーモンを開始して、NIS サービスを開始できます。次のとおりに入力して、既存のすべての yp プロセスを停止する必要があります。


# /usr/lib/netsvc/yp/ypstop

スレーブサーバーで ypserv を開始して ypbind を実行するには、次のとおりに入力します。


# /usr/lib/netsvc/yp/ypstart

これとは別に、スレーブサーバーをリブートして、デーモンを自動的に開始することもできます。

NIS クライアントの設定

次の 2 つの手続きを実行して、NIS をマシンで使用できるようにします。

NIS を使用するマシンの構成

以下にネームサービスとして NIS を使用するマシンを構成する方法を 2 通り説明します。

NIS サーバー (クライアントはそこからネームサービス情報を得る) を指定するように要求されます。必要なだけマスターサーバーやスレーブサーバーを指定できます。指定するサーバーはドメイン内のどこにあってもかまいません。クライアントにネットワーク的に近いサーバーから遠いサーバーの順に指定することをお勧めします。

ypbind を実行すると、NIS サーバーをローカルサブネットで探して、見つかれば接続します。この検索を「ブロードキャスト」と呼びます。クライアントのローカルサブネットに NIS サーバーがない場合には接続されず、クライアントマシンは NIS サービスから名前空間データを得ることができません。

NIS マップ

NIS が使用する名前空間データは、NIS マップ群に格納されます。本質的に NIS マップは、2 つの列で構成される表です。

デフォルトの NIS マップ

表 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

passwdshadow

C2 クライアント用の監査情報と隠蔽されたパスワード情報を含む 

passwd.byname

passwdshadow

ユーザー名をキーとして、パスワード情報を含む 

passwd.byuid

passwdshadow

キーがユーザー 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 マップの修正

作成後の NIS マップの修正については、『Solaris ネーミングの管理』を参照してください。

NIS の管理、問題解決、エラーメッセージ

NIS の管理、問題解決、エラーメッセージの詳細は、『Solaris ネーミングの管理』を参照してください。