NIS マスタサーバの設定
 Cent OS (Linux) 上で NIS マスタサーバを動かし, passwd, group, hosts の 3つのファイルを管理し ます。 信で使用) LAN 内の問い合わせに応じて、これら3つのファイルを配布します. 動作確認まで行ないます。
LAN 内の問い合わせに応じるが, LAN 外の問い合わせには応じない. passwd, group, hosts は管理するが、これら3つのファイル以外は配布しない. ypserv, ypxfrd, yppasswdd を動かします.
事前に調べておく事項
- NIS ドメイン名
- NIS マスタサーバの IP アドレス
ifconfig で調べる - NIS マスタサーバのホスト名
hostname コマンドで調べる。 - DNS サーバ IP のアドレス
- DNS ドメイン名 (NIS ドメイン名とは別物なので勘違いしないこと)
NIS サーバソフトのインストール
- インストール
GNOME デスクトップにおいて「アプリケーション」→ 「システム設定」→「アプリケーションの追加/削除」
サーバ ネットワークサーバ → 「詳細」をクリックし、「ypserv」をチェックする
Cent OS ディスク 3が要求されるので入れる.
- updatedb の実行
ypinit の場所が分かりにくいので updatedb コマンドを実行しておき、 あとでypinit の場所が探しやすいようにしておく.
updatedb &
NIS データの作成練習
NIS マスタサーバで passwd, group, hosts の3つを管理する練習を行います. ここでの手順では, passwd, group, hosts のごく簡単なサンプルを作る。
- NIS ファイル用のディレクトリ作成
# mkdir /var/yp/nis.inputs
- NIS 用 passwd 作成
# vi /var/yp/nis.inputs/passwd
passwd の文法は次のようになります.
----- <ユーザ名>:*:20001:800:<ユーザの説明>:/home/<ユーザ名>:/bin/tcsh -----
- NIS 用 hosts 作成
# vi /var/yp/nis.inputs/hosts
hosts には、次のように NIS マスタサーバ自身についての情報を含めておきます
----- 127.0.0.1 localhost <NIS マスタサーバの IP アドレス> <NIS マスタサーバのホスト名>.<DNS ドメイン名> <NIS マスタサーバのホスト名> -----
- NIS 用 group 作成
# vi /var/yp/nis.inputs/group
group の文法は次のようになります.
----- 8th:*:800: -----
NIS マスタサーバ設定
- 事前の確認
- NIS マスタサーバ上の /etc/resolv.conf が正しく設定されていること(必須)
- NIS マスタサーバ上の /etc/hosts の中身に間違いがないこと(必須)
次のような2行を含むこと.
127.0.0.1 localhost <NIS マスタサーバの IP アドレス> <NIS マスタサーバのホスト名>.<DNS ドメイン名> <NIS マスタサーバのホスト名>
- /var/yp/ypservers
vi /var/yp/ypservers # 仮の設定として次の1行を書いておく ----- localhost localhost -----
-
/var/yp/Makefile を編集
YPSRCDIR, YPPWDDIR システムをデフォルト値から /var/yp/nis.inputs に変更 します. さらに, all の行を変更して、passwd, group, hosts は管理するが、これら3つのファ イル以外は配布しないようにしています. MERGE_PASSWD, MERGE_GROUP は取り敢えず false に変更する案にしています.
vi /var/yp/Makefile # (1) MERGE_PASSWD を変更 # MERGE_PASSWD=true # ↓ # MERGE_PASSWD=false # (2) MERGE_GROUP を変更 # MERGE_GROUP=true # ↓ # MERGE_GROUP=false # (3) YPSRCDIR システムを変更 # YPSRCDIR= /etc # ↓ # YPSRCDIR= /var/yp/nis.inputs # (4) YPPWDDIR システムを変更 # YPPWDDIR= /etc # ↓ # YPPWDDIR= /var/yp/nis.inputs # (5) all を変更 # all: passwd group hosts rpc services netid protocols mail \ # ↓ # all: passwd group hosts \ # # all: passwd group hosts rpc services netid protocols mail \
- domainname の確認 (domainname コマンド実行)
domainname # 正しい NIS ドメイン名が表示されることを確認する
もし、NIS ドメイン名が正しくないときは、次のコマンドを実行して変更して おく
domainname <NISドメイン名>
- ypdomainname コマンド実行
ypdomainname # 正しい NIS ドメイン名が表示されることを確認する
もし、NIS ドメイン名が正しくないときは、次のコマンドを実行して変更して おく
ypdomainname <NISドメイン名>
- /etc/yp.conf の確認
正しく設定されていることを確認する (違っていれば修正する).
domain <NIS ドメイン名> server <NISサーバの IP アドレス>
- /etc/sysconfig/network
次のような1行を含むこと
cat /etc/sysconfig/network # 次のような1行を含むことを確認 --- NISDOMAIN=<NIS ドメイン名> ---
-
/etc/sysconfig/yppasswdd の設定
ETCDIR システムを /var/yp/nis.inputs に変更する (rpc.yppasswdd が /etc で無く、 /var/yp/nis.inputsを扱うようにする).
YPPASSWD_ARGS を指定して, yppasswd コマンドでシェルの変更もできるよう にする, ypchfn コマンドも使えるようにする.
vi /etc/sysconfig/yppasswdd # (1) ETCDIR システムを変更 # ETCDIR=/etc # ↓ # ETCDIR=/var/yp/nis.inputs # (2) YPPASSWD_ARGS を変更 # YPPASSWD_ARGS= # ↓ # YPPASSWD_ARGS="-e chsh -e chfn"
-
次のファイルは、最終行に空行が入っているとエラーになることがあるので、
確認してください
- /var/yp/nis.inputs/passwd
- /var/yp/nis.inputs/hosts
- /var/yp/nis.inputs/group
- /var/yp/securenets
- /var/yp/ypservers
- ypbind の停止
ypbind がすでに動いている可能性がある. 下記の手順の「14. ypinit の実行」と「15. make の実行」が無事に終了するまで, ypbind は止めておく (エラー回避のため).
停止の際のエラーメッセージとして「ypbind が動いていないという意味のメッセージ」が出ても無視して良い.
/sbin/service ypbind stop /sbin/chkconfig ypbind off
- ypserv, yppasswdd, ypxfrd の起動
ypxfrd, yppasswdd, ypserv もすでに動いている可能性がある. ypbind, ypxfrd, yppasswdd, ypserv を(この順で)いったん停止して、再度起 動することにする.
停止の際のエラーメッセージとして「ypxfrd/yppasswdd/ypserv が 動いていないという意味のメッセージ」が出ても無視して良い.
/sbin/service ypxfrd stop /sbin/chkconfig ypxfrd off /sbin/service yppasswdd stop /sbin/chkconfig yppasswdd off /sbin/service ypserv stop /sbin/chkconfig ypserv off
ypserv, yppasswdd, ypxfrd を起動する. 起動時にエラーメッセージ が出ないことを確認.
/sbin/service ypserv start /sbin/chkconfig ypserv on /sbin/service ypxfrd start /sbin/chkconfig ypxfrd on /sbin/service yppasswdd start /sbin/chkconfig yppasswdd on
エラーが出たら、設定ファイルを見直して、「11. ypserv, yppasswdd, ypxfrd の起動」の全手順をやり直す
- (オプション) ypserv が稼働中であることを確認
GNOME デスクトップにおいて「アプリケーション」→「システム設定」→「サーバ設定」→「サービス」 を実行して, ypserv が稼働中であることを確認する.
- (オプション) /usr/sbin/rpcinfo -p
ypserv稼働中であることを確認.
- ypinit の実行
ypinit の場所がよく分からないときは「locate ypinit」で探して下さい.
cd /var/yp /usr/lib/yp/ypinit -m # 次のように表示されるので確認する --- servers. cent1.db.is.kyushu-u.ac.jp is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a
. next host to add: cent1.db.is.kyushu-u.ac.jp next host to add: --- # NIS マスタサーバが正しく表示されない場合に限り、「next host to add:」に対 # して、NIS マスタサーバ名を入れる 設定が終ったら「ctrl+D」で終了させる
次のように表示されるので、NIS マスタサーバ名が正しく表示されていることを確認 し、「y」で終了させる
The current list of NIS servers looks like this: cent1.db.is.kyushu-u.ac.jp Is this correct? [y/n: y] y
- make の実行
設定ファイルのチェックを兼ねる。 (そのため make としないで、わざと make hosts, make passwd, make group のように3手順を踏む)。設定のミスがあったり, ypserv が稼働していないとエラーがでる.
cd /var/yp make hosts make passwd make group
make においてエラーが出たら、設定ファイルを見直して、 「11. ypserv, yppasswdd, ypxfrd の起動」及びそれ以降の全手順をやり直す.
(参考) 今後、/var/yp/nis.inputs 下のファイルを書き換えたら、そのたびに、 「cd /var/yp; make」を実行すること(サーバの再起動などを手動で行なう必 要は無い).
- /etc/nsswitch.conf の確認
NIS マスタサーバマシンを、NIS クライアントとして機能させたい場合、 /etc/nsswitch.conf の passwd, group, host の行に nis を含めておく必要 がある。
- ypbind の起動の試み
ypbind を起動してみて、起動時にエラーメッセージが出ないことを確認.
/sbin/service ypbind start /sbin/chkconfig ypbind on
ヒント: iptables が邪魔をしているときがあります。
/etc/rc.d/init.d/iptables stop /sbin/chkconfig iptables off
(オプション)パスワードの格納形式の確認
yppasswd コマンドを実行した時に、NIS マスタサーバマシン上でのパスワード形式が、 DES または MD5 の望む方で登録されるように設定します。
-
MD5 の場合: /etc/pam.d/system-auth で次のように設定します (CentOS など RedHat
系の場合)
vi /etc/pam.d/system-auth # password の行を次のように設定 password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow nis
-
DES の場合: /etc/pam.d/system-auth で次のように設定します (CentOS など RedHat
系の場合)
vi /etc/pam.d/system-auth # password の行を次のように設定 password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok des shadow nis
今のパスワードが、DES なのか MD5 なのかは、passwd 等のパスワー ドに $1$ が付いているかで判別します。MD5 なら付いている。
NIS マスタサーバにおけるアクセス制限の設定
- /etc/hosts.deny
portmap, ypserv の2行を次のように設定する. (portmap, ypserv の2行が無ければ、書き加える)
vi /etc/hosts.deny --- portmap: ALL ypserv: ALL ---
- /etc/hosts.allow
portmap, ypserv の2行を次のように設定する(portmap, ypserv の2行が無け れば、書き加える). (XXX,YYY,ZZZ の部分は LAN のネットワークアドレスを書く.
vi /etc/hosts.allow --- portmap: XXX.YYY.ZZZ. ypserv: 127.0.0.1 XXX.YYY.ZZZ. ---
- /var/yp/securenets
「XXX.YYY.ZZZ」 の部分は LAN のネットワークアドレス
# vi /var/yp/securenets ----- 255.255.255.255 127.0.0.1 255.255.255.0 XXX.YYY.ZZZ.0 -----
- 再起動
# sync # sync # sync # sync # sync # reboot
実験手順(1)
動作確認及び NIS 管理コマンドの練習を行なう.
仮のNIS マスタサーバマシンと NIS クライアントマシンの 2台を用意し, ドメイン名の 設定 (/etc/sysconfig/network, /etc/yp.conf) は, NIS マスタサーバマシンと NIS クライアントマシンの間で矛盾が無いようにしてお きます. (NIS マスタサーバマシンと NIS クライアントマシンで違う NIS ドメイン 名が設定されていたりしないこと) .
仮のNIS マスタサーバマシンと NIS クライアントマシンは同一ネットワークにつな いで実験する. なお、NIS クライアントマシンは2台以上でも下記の手順で実 験できます.
調べておく事項
- 「仮のNISサーバ」の IP アドレス
- 「仮のNISサーバ」で設定した NIS ドメイン名
- NISクライアントマシンの IP アドレス(固定)
- NISクライアントマシン/「仮のNISサーバ」がつながるネットワークのデフォルトゲートウエイアドレス
- NISクライアントマシン/「仮のNISサーバ」がつながるネットワークのサブネットマスク
準備 (NISクライアント側)
現在立ち上げた「仮のNISサーバ」の動作確認と実験を行なうために、 「仮のNISサーバ」からのサービスを受けるように設定しなおします.
- IP アドレスは固定にする.
もし、DHCP になっていたら、次の手順で IP アドレスを固定します. なお、プライベートアドレスを使っても、実験に支障はありません. 他の人と同じ IP アドレスを使わないこと.
[アプリケーション]→[システム設定]→[ネットワーク] 【ネットワーク設定】デバイスのタブから起動中のデバイスをダブルクリック 【イーサネットデバイス】自動的にIPアドレス設定を取得のチェックをはずし、 固定のIPアドレス設定にチェック
- domainname の実行
domainname コマンドを実行して、「仮のNISサーバ」で設定した NIS ドメイン名を設定しておく
domainname <「仮のNISサーバ」で設定した NIS ドメイン名>
- /etc/yp.conf の確認
「「仮のNISサーバ」で設定した NIS ドメイン名」と 「「仮のNISサーバ」の IP アドレス」 を /etc/yp.conf に正しく設定する.
domain <「仮のNISサーバ」で設定した NIS ドメイン名> server <「仮のNISサーバ」の IP アドレス>
- /etc/sysconfig/network
次のような1行を含むように設定しなおす
NISDOMAIN=<「仮のNISサーバ」で設定した NIS ドメイン名>
- ypbind を再起動
設定ファイルを書き換えたので、ypbind を再起動してみます. エラーメッセージが出ていないことを確認.
/sbin/service ypbind stop /sbin/chkconfig ypbind off /sbin/service ypbind start /sbin/chkconfig ypbind on
- (オプション) ypbind が稼働中であることを確認
GNOME デスクトップにおいて「アプリケーション」→「システム設定」→「サーバ設定」→「サービス」 を実行して, ypbind が稼働中であることを確認する. (稼働していなければ, チェックして稼働させる).
- (オプション) 再起動し、エラーメッセージが出ないことの確認
sync sync sync sync sync reboot
(オプション) 準備 (仮のNISサーバ側)
エラー回避のため, 念のため「仮のNISサーバ」において下記の確認作業を行ないます.
- domainname の確認
domainname コマンドを実行して、クライアントで設定していた「「仮のNISサー バ」で設定した NIS ドメイン名」と一致していることを確認する.
domainname
- /etc/yp.conf の確認
クライアントで設定していた」で設定した NIS ドメイン名」, 「「仮のNISサーバ」で設定した NIS ドメイン名」と一致していることを確認する.
domain <「仮のNISサーバ」で設定した NIS ドメイン名> server <「仮のNISサーバ」の IP アドレス>
- /etc/sysconfig/network
クライアントで設定していた「「仮のNISサー バ」で設定した NIS ドメイン名」と一致していることを確認する.
NISDOMAIN=<「仮のNISサーバ」で設定した NIS ドメイン名>
- もし, 上記の 1, 2, 3 でNISサーバの設定ファイル内に間違いが見つかったら修正し, 「NISサーバ設定」における「11. ypserv, yppasswdd, ypxfrd の起動」及 びそれ以降の全手順をやり直す.
動作確認手順 (NISクライアント側)
- ypbind が稼働中か?
/usr/sbin/rpcinfo -p localhost # portmapper, ypbind についての情報が表示される /usr/sbin/rpcinfo -u localhost ypbind # ypbind についての情報が表示される ypcat hosts # NIS マスタサーバで管理されている host が表示される
- ypwhich コマンドを実行してみる
ypwhich
ここで設定した「仮のNISサーバ」が表示されることを確認.
- ypcat passwd, ypcat group, ypcat hosts で動作確認
ypcat passwd ypcat group ypcat hosts
正しく表示されれば成功
- passwd, group, hosts 以外は配布していないことの確認
ypcat rpc ypcat services ypcat netid ypcat protocols ypcat mail
表示されないことを確認
- yppasswdd の動作確認手順
ps -e | grep yppasswd で、rpc.yppasswddが出るか?
クライアント側で
yppasswd <ユーザー名>
マスターサーバの root パスワード
type : ユーザーのパスワード retype : ユーザーのパスワード
でパスワードが変更できるかどうか
できなければ、"The NIS password has not been changed ..." 等のメッセージ が出るはず。
- LAN 外からは利用できないことの確認手順 → 先送り
(オプション) 実験手順(2)
本物の NIS マスタサーバからデータ(passwd, group. hosts)を持ってきて、NIS 管 理コマンドの再度の練習を行なう. なお、パスワード形式は、MD5 と DES があり、形式が合致していないとこの 手順は使えません.
上記の「実験手順(1)」の続きです. 「実験手順(1)」で使った仮のNIS マスタサーバマシンと NIS クライアントマシンを そのまま使う. 今度の実験では, 本物の NIS マスタサーバから本物のデータ(passwd, group. hosts)を持っ てきて仮のNIS マスタサーバマシンに置き、動作確認と練習を行ないます.
NIS マスタサーバの入れ換えの練習ではありません.
調べておく事項
- 「本物のNISサーバ」の IP アドレス
- 「仮のNISサーバ」の IP アドレス
- 「仮のNISサーバ」で設定した NIS ドメイン名
- NISクライアントマシンの IP アドレス(固定)
- NISクライアントマシン/「仮のNISサーバ」がつながるネットワークのデフォルトゲートウエイアドレス
- NISクライアントマシン/「仮のNISサーバ」がつながるネットワークのサブネットマスク
動作確認手順 (「本物のNISサーバ」での作業)
「本物のNISサーバ」での作業です.
- データ転送の準備
cd /var/yp/`domainname` tar -cvf /var/tmp/yp.tar ./yp
動作確認手順 (「仮のNISサーバ」での作業)
「仮のNISサーバ」での作業です.
- 「仮のNISサーバ」での作業
「本物のNISサーバ」からファイルを持ってくる
cd /tmp sftp 「本物のNISサーバ」の IP アドレス:/var/tmp/a.tar tar -xvf a.tar
cd /var/yp cd `domainname` pwd
「本物のNISサーバ」から持ってきたファイルを置く
rm -f passwd rm -f group rm -f hosts cp /tmp/`domainname`/passwd . cp /tmp/`domainname`/group . cp /tmp/`domainname`/hosts .
- make の実行
cd /var/yp make # エラーメッセージが出ないことを確認
- ypcat passwd, ypcat group, ypcat hosts で動作確認
ypcat passwd ypcat group ypcat hosts
正しく表示されれば成功
実験手順(3)
NIS スレーブサーバのごく簡単な動作確認を行なう.
仮のNISスレーブサーバにするマシン(マシンA)と、NISマスターサーバにするマシン(マシンB)を用意し, ドメイン名の 設定 (/etc/sysconfig/network, /etc/yp.conf) は, これら2台のサーバと、NIS クライアントマシンの間で矛盾が無いようにしてお きます. (NIS マスタサーバマシンと NIS クライアントマシンで違う NIS ドメイン 名が設定されていたりしないこと) .
これらマシンは同一ネットワークにつないで実験します。
調べておく事項
スレーブサーバにするNIS(マシンA)とマスターサーバにするNIS(マシンB) を決めることが必要。
- NISスレーブサーバにするマシン(マシンA)の IP アドレス
- NISマスターサーバにするマシン(マシンB)の IP アドレス
- NISマスターサーバにするマシン(マシンB)のホスト名
- NISクライアントマシンの IP アドレス
- マシンBで設定した NIS ドメイン名
準備(NIS クライアントマシン)
マシンAとNIS クライアントマシンは兼用可能かも(?)。
- domainname の実行
domainname コマンドを実行して、「マシンBで設定した NIS ドメイン名」を設定しておく
domainname <マシンBで設定した NIS ドメイン名>
- /etc/yp.conf の確認
「マシンBで設定した NIS ドメイン名」と 「NISスレーブサーバにするマシン(マシンA)の IP アドレス」を /etc/yp.conf に設定し、NISの要求がマシンAに行くように設定する
domain <マシンBで設定した NIS ドメイン名> server <NISスレーブサーバにするマシン(マシンA)の IP アドレス>
- /etc/sysconfig/network
次のような1行を含むように設定しなおす
NISDOMAIN=<マシンBで設定した NIS ドメイン名>
準備(マシンA)
マシンAがマシンBのNISスレーブサーバとして動くための設定.
cd /var/yp /usr/lib/yp/ypinit -s <マシンBのホスト名> ls /var/yp
でディレクトリの中身を確認 ・・・ (ア)
準備(マシンB)
一応 ypxfrd が起動しているかどうかを確認: # ps -e | grep ypxfrd で rpc.ypxfrd がでるか
cd /var/yp vi Makefile # 以下のように書き換え ---------------------- NOPUSH=true の行を NOPUSH=false に替える ---------------------- /usr/lib/yp/ypinit -m Ctrl+D
上記の操作で、マシンAをスレーブサーバーに追加されます。 念のため、「cat /var/yp/ypservers」を実行し、その結果出てくるサーバリ ストに、マシンAが含まれていることを確認します
cat /var/yp/ypservers
マシン
動作確認手順 (マシンA)
マシンAで ls /var/yp …(イ)
この時点で、(ア)の段階では無かったディレクトリが出来ている(はず) それを確認する。ディレクトリの名前はマスターサーバのNISドメイン名であ る。その中に、.byname等のマップファイルが生成される また、例えばマスタサーバの /var/yp/nis.inputs 下にある passwd 等のファ イルを書き換え、/var/yp 以下で make をしても良い。
以下、記述中
- 仮のNIS マスタサーバマシンにおける動作確認と練習
- NIS クライアントマシンを使った動作確認と練習
まとめ
NIS マスタサーバにおいて、エディタ等での編集を必要とするファイルは下記の通り.
- /var/yp/nis.inputs/passwd
- /var/yp/nis.inputs/hosts
- /var/yp/nis.inputs/group
- /var/yp/ypservers
- /var/yp/Makefile
- /etc/sysconfig/network
- /etc/sysconfig/yppasswdd
- /var/yp/securenets