Cent OS (Linux) 上で NIS マスタサーバを動かし, passwd, group, hosts の 3つのファイルを管理し ます。 信で使用) LAN 内の問い合わせに応じて、これら3つのファイルを配布します. 動作確認まで行ないます。
LAN 内の問い合わせに応じるが, LAN 外の問い合わせには応じない. passwd, group, hosts は管理するが、これら3つのファイル以外は配布しない. ypserv, ypxfrd, yppasswdd を動かします.
GNOME デスクトップにおいて「アプリケーション」→ 「システム設定」→「アプリケーションの追加/削除」
サーバ ネットワークサーバ → 「詳細」をクリックし、「ypserv」をチェックする
Cent OS ディスク 3が要求されるので入れる.
ypinit の場所が分かりにくいので updatedb コマンドを実行しておき、 あとでypinit の場所が探しやすいようにしておく.
updatedb &
NIS マスタサーバで passwd, group, hosts の3つを管理する練習を行います. ここでの手順では, passwd, group, hosts のごく簡単なサンプルを作る。
# mkdir /var/yp/nis.inputs
# vi /var/yp/nis.inputs/passwd
passwd の文法は次のようになります.
----- <ユーザ名>:*:20001:800:<ユーザの説明>:/home/<ユーザ名>:/bin/tcsh -----
# vi /var/yp/nis.inputs/hosts
hosts には、次のように NIS マスタサーバ自身についての情報を含めておきます
----- 127.0.0.1 localhost <NIS マスタサーバの IP アドレス> <NIS マスタサーバのホスト名>.<DNS ドメイン名> <NIS マスタサーバのホスト名> -----
# vi /var/yp/nis.inputs/group
group の文法は次のようになります.
----- 8th:*:800: -----
次のような2行を含むこと.
127.0.0.1 localhost <NIS マスタサーバの IP アドレス> <NIS マスタサーバのホスト名>.<DNS ドメイン名> <NIS マスタサーバのホスト名>
vi /var/yp/ypservers # 仮の設定として次の1行を書いておく ----- localhost localhost -----
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 # 正しい NIS ドメイン名が表示されることを確認する
もし、NIS ドメイン名が正しくないときは、次のコマンドを実行して変更して おく
domainname <NISドメイン名>
ypdomainname # 正しい NIS ドメイン名が表示されることを確認する
もし、NIS ドメイン名が正しくないときは、次のコマンドを実行して変更して おく
ypdomainname <NISドメイン名>
正しく設定されていることを確認する (違っていれば修正する).
domain <NIS ドメイン名> server <NISサーバの IP アドレス>
次のような1行を含むこと
cat /etc/sysconfig/network # 次のような1行を含むことを確認 --- NISDOMAIN=<NIS ドメイン名> ---
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"
ypbind がすでに動いている可能性がある. 下記の手順の「14. ypinit の実行」と「15. make の実行」が無事に終了するまで, ypbind は止めておく (エラー回避のため).
停止の際のエラーメッセージとして「ypbind が動いていないという意味のメッセージ」が出ても無視して良い.
/sbin/service ypbind stop /sbin/chkconfig ypbind off
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 の起動」の全手順をやり直す
GNOME デスクトップにおいて「アプリケーション」→「システム設定」→「サーバ設定」→「サービス」 を実行して, ypserv が稼働中であることを確認する.
ypserv稼働中であることを確認.
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 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」を実行すること(サーバの再起動などを手動で行なう必 要は無い).
NIS マスタサーバマシンを、NIS クライアントとして機能させたい場合、 /etc/nsswitch.conf の passwd, group, host の行に nis を含めておく必要 がある。
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 の望む方で登録されるように設定します。
vi /etc/pam.d/system-auth # password の行を次のように設定 password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow nis
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 なら付いている。
portmap, ypserv の2行を次のように設定する. (portmap, ypserv の2行が無ければ、書き加える)
vi /etc/hosts.deny --- portmap: ALL ypserv: ALL ---
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. ---
「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
動作確認及び NIS 管理コマンドの練習を行なう.
仮のNIS マスタサーバマシンと NIS クライアントマシンの 2台を用意し, ドメイン名の 設定 (/etc/sysconfig/network, /etc/yp.conf) は, NIS マスタサーバマシンと NIS クライアントマシンの間で矛盾が無いようにしてお きます. (NIS マスタサーバマシンと NIS クライアントマシンで違う NIS ドメイン 名が設定されていたりしないこと) .
仮のNIS マスタサーバマシンと NIS クライアントマシンは同一ネットワークにつな いで実験する. なお、NIS クライアントマシンは2台以上でも下記の手順で実 験できます.
調べておく事項
現在立ち上げた「仮のNISサーバ」の動作確認と実験を行なうために、 「仮のNISサーバ」からのサービスを受けるように設定しなおします.
もし、DHCP になっていたら、次の手順で IP アドレスを固定します. なお、プライベートアドレスを使っても、実験に支障はありません. 他の人と同じ IP アドレスを使わないこと.
[アプリケーション]→[システム設定]→[ネットワーク] 【ネットワーク設定】デバイスのタブから起動中のデバイスをダブルクリック 【イーサネットデバイス】自動的にIPアドレス設定を取得のチェックをはずし、 固定のIPアドレス設定にチェック
domainname コマンドを実行して、「仮のNISサーバ」で設定した NIS ドメイン名を設定しておく
domainname <「仮のNISサーバ」で設定した NIS ドメイン名>
「「仮のNISサーバ」で設定した NIS ドメイン名」と 「「仮のNISサーバ」の IP アドレス」 を /etc/yp.conf に正しく設定する.
domain <「仮のNISサーバ」で設定した NIS ドメイン名> server <「仮のNISサーバ」の IP アドレス>
次のような1行を含むように設定しなおす
NISDOMAIN=<「仮のNISサーバ」で設定した NIS ドメイン名>
設定ファイルを書き換えたので、ypbind を再起動してみます. エラーメッセージが出ていないことを確認.
/sbin/service ypbind stop /sbin/chkconfig ypbind off /sbin/service ypbind start /sbin/chkconfig ypbind on
GNOME デスクトップにおいて「アプリケーション」→「システム設定」→「サーバ設定」→「サービス」 を実行して, ypbind が稼働中であることを確認する. (稼働していなければ, チェックして稼働させる).
sync sync sync sync sync reboot
エラー回避のため, 念のため「仮のNISサーバ」において下記の確認作業を行ないます.
domainname コマンドを実行して、クライアントで設定していた「「仮のNISサー バ」で設定した NIS ドメイン名」と一致していることを確認する.
domainname
クライアントで設定していた」で設定した NIS ドメイン名」, 「「仮のNISサーバ」で設定した NIS ドメイン名」と一致していることを確認する.
domain <「仮のNISサーバ」で設定した NIS ドメイン名> server <「仮のNISサーバ」の IP アドレス>
クライアントで設定していた「「仮のNISサー バ」で設定した NIS ドメイン名」と一致していることを確認する.
NISDOMAIN=<「仮のNISサーバ」で設定した NIS ドメイン名>
/usr/sbin/rpcinfo -p localhost # portmapper, ypbind についての情報が表示される /usr/sbin/rpcinfo -u localhost ypbind # ypbind についての情報が表示される ypcat hosts # NIS マスタサーバで管理されている host が表示される
ypwhich
ここで設定した「仮のNISサーバ」が表示されることを確認.
ypcat passwd ypcat group ypcat hosts
正しく表示されれば成功
ypcat rpc ypcat services ypcat netid ypcat protocols ypcat mail
表示されないことを確認
ps -e | grep yppasswd で、rpc.yppasswddが出るか?
クライアント側で
yppasswd <ユーザー名>
マスターサーバの root パスワード
type : ユーザーのパスワード retype : ユーザーのパスワード
でパスワードが変更できるかどうか
できなければ、"The NIS password has not been changed ..." 等のメッセージ が出るはず。
本物の NIS マスタサーバからデータ(passwd, group. hosts)を持ってきて、NIS 管 理コマンドの再度の練習を行なう. なお、パスワード形式は、MD5 と DES があり、形式が合致していないとこの 手順は使えません.
上記の「実験手順(1)」の続きです. 「実験手順(1)」で使った仮のNIS マスタサーバマシンと NIS クライアントマシンを そのまま使う. 今度の実験では, 本物の NIS マスタサーバから本物のデータ(passwd, group. hosts)を持っ てきて仮のNIS マスタサーバマシンに置き、動作確認と練習を行ないます.
NIS マスタサーバの入れ換えの練習ではありません.
調べておく事項
「本物のNISサーバ」での作業です.
cd /var/yp/`domainname` tar -cvf /var/tmp/yp.tar ./yp
「仮の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 .
cd /var/yp make # エラーメッセージが出ないことを確認
ypcat passwd ypcat group ypcat hosts
正しく表示されれば成功
NIS スレーブサーバのごく簡単な動作確認を行なう.
仮のNISスレーブサーバにするマシン(マシンA)と、NISマスターサーバにするマシン(マシンB)を用意し, ドメイン名の 設定 (/etc/sysconfig/network, /etc/yp.conf) は, これら2台のサーバと、NIS クライアントマシンの間で矛盾が無いようにしてお きます. (NIS マスタサーバマシンと NIS クライアントマシンで違う NIS ドメイン 名が設定されていたりしないこと) .
これらマシンは同一ネットワークにつないで実験します。
調べておく事項
スレーブサーバにするNIS(マシンA)とマスターサーバにするNIS(マシンB) を決めることが必要。
マシンAとNIS クライアントマシンは兼用可能かも(?)。
domainname コマンドを実行して、「マシンBで設定した NIS ドメイン名」を設定しておく
domainname <マシンBで設定した NIS ドメイン名>
「マシンBで設定した NIS ドメイン名」と 「NISスレーブサーバにするマシン(マシンA)の IP アドレス」を /etc/yp.conf に設定し、NISの要求がマシンAに行くように設定する
domain <マシンBで設定した NIS ドメイン名> server <NISスレーブサーバにするマシン(マシンA)の IP アドレス>
次のような1行を含むように設定しなおす
NISDOMAIN=<マシンBで設定した NIS ドメイン名>
マシンAがマシンBのNISスレーブサーバとして動くための設定.
cd /var/yp /usr/lib/yp/ypinit -s <マシンBのホスト名> ls /var/yp
でディレクトリの中身を確認 ・・・ (ア)
一応 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で ls /var/yp …(イ)
この時点で、(ア)の段階では無かったディレクトリが出来ている(はず) それを確認する。ディレクトリの名前はマスターサーバのNISドメイン名であ る。その中に、.byname等のマップファイルが生成される また、例えばマスタサーバの /var/yp/nis.inputs 下にある passwd 等のファ イルを書き換え、/var/yp 以下で make をしても良い。
以下、記述中
NIS マスタサーバにおいて、エディタ等での編集を必要とするファイルは下記の通り.