金子邦彦研究室インストールUbuntu サーバ,リモート接続NIS マスタサーバの設定

NIS マスタサーバの設定

 

Cent OS (Linux) 上で NIS マスタサーバを動かし, passwd, group, hosts の 3つのファイルを管理し ます。 信で使用) LAN 内の問い合わせに応じて、これら3つのファイルを配布します. 動作確認まで行ないます。

LAN 内の問い合わせに応じるが, LAN 外の問い合わせには応じない. passwd, group, hosts は管理するが、これら3つのファイル以外は配布しない. ypserv, ypxfrd, yppasswdd を動かします.

事前に調べておく事項

NIS サーバソフトのインストール

  1. インストール

    GNOME デスクトップにおいて「アプリケーション」→ 「システム設定」→「アプリケーションの追加/削除」

    サーバ
        ネットワークサーバ
    
        → 「詳細」をクリックし、「ypserv」をチェックする
    

    Cent OS ディスク 3が要求されるので入れる.

  2. updatedb の実行

    ypinit の場所が分かりにくいので updatedb コマンドを実行しておき、 あとでypinit の場所が探しやすいようにしておく.

    updatedb &
    

NIS データの作成練習

NIS マスタサーバで passwd, group, hosts の3つを管理する練習を行います. ここでの手順では, passwd, group, hosts のごく簡単なサンプルを作る。

  1. NIS ファイル用のディレクトリ作成

    # mkdir /var/yp/nis.inputs
    
  2. NIS 用 passwd 作成

    # vi /var/yp/nis.inputs/passwd
    

    passwd の文法は次のようになります.

    -----
    <ユーザ名>:*:20001:800:<ユーザの説明>:/home/<ユーザ名>:/bin/tcsh
    -----
    
  3. NIS 用 hosts 作成

    # vi /var/yp/nis.inputs/hosts
    

    hosts には、次のように NIS マスタサーバ自身についての情報を含めておきます

    -----
    127.0.0.1 localhost
    <NIS マスタサーバの IP アドレス> <NIS マスタサーバのホスト名>.<DNS ドメイン名> <NIS マスタサーバのホスト名>
    -----
    
  4. NIS 用 group 作成

    # vi /var/yp/nis.inputs/group
    

    group の文法は次のようになります.

    -----
    8th:*:800:
    -----
    

NIS マスタサーバ設定

  1. 事前の確認
  2. /var/yp/ypservers

    vi /var/yp/ypservers
      # 仮の設定として次の1行を書いておく
    -----
    localhost localhost
    -----
    
  3. /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 \
    

  4. domainname の確認 (domainname コマンド実行)

    domainname
     # 正しい NIS ドメイン名が表示されることを確認する
    

    もし、NIS ドメイン名が正しくないときは、次のコマンドを実行して変更して おく

    domainname <NISドメイン名>
    
  5. ypdomainname コマンド実行

    ypdomainname
     # 正しい NIS ドメイン名が表示されることを確認する
    

    もし、NIS ドメイン名が正しくないときは、次のコマンドを実行して変更して おく

    ypdomainname <NISドメイン名>
    
  6. /etc/yp.conf の確認

    正しく設定されていることを確認する (違っていれば修正する).

    domain <NIS ドメイン名> server <NISサーバの IP アドレス>
    
  7. /etc/sysconfig/network

    次のような1行を含むこと

    cat /etc/sysconfig/network
      # 次のような1行を含むことを確認
    ---
    NISDOMAIN=<NIS ドメイン名>
    ---
    
  8. /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"
    
    
  9. 次のファイルは、最終行に空行が入っているとエラーになることがあるので、 確認してください
  10. ypbind の停止

    ypbind がすでに動いている可能性がある. 下記の手順の「14. ypinit の実行」と「15. make の実行」が無事に終了するまで, ypbind は止めておく (エラー回避のため).

    停止の際のエラーメッセージとして「ypbind が動いていないという意味のメッセージ」が出ても無視して良い.

    /sbin/service ypbind stop
    /sbin/chkconfig ypbind off
    
  11. 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 の起動」の全手順をやり直す

  12. (オプション) ypserv が稼働中であることを確認

    GNOME デスクトップにおいて「アプリケーション」→「システム設定」→「サーバ設定」→「サービス」 を実行して, ypserv が稼働中であることを確認する.

  13. (オプション) /usr/sbin/rpcinfo -p

    ypserv稼働中であることを確認.

  14. 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
    
  15. 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」を実行すること(サーバの再起動などを手動で行なう必 要は無い).

  16. /etc/nsswitch.conf の確認

    NIS マスタサーバマシンを、NIS クライアントとして機能させたい場合、 /etc/nsswitch.conf の passwd, group, host の行に nis を含めておく必要 がある。

  17. 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 の望む方で登録されるように設定します。

今のパスワードが、DES なのか MD5 なのかは、passwd 等のパスワー ドに $1$ が付いているかで判別します。MD5 なら付いている。

NIS マスタサーバにおけるアクセス制限の設定

  1. /etc/hosts.deny

    portmap, ypserv の2行を次のように設定する. (portmap, ypserv の2行が無ければ、書き加える)

    vi /etc/hosts.deny
    ---
    portmap: ALL
    ypserv: ALL
    ---
    
  2. /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.
    ---
    
  3. /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
    -----
    
  4. 再起動

    # 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クライアント側)

現在立ち上げた「仮のNISサーバ」の動作確認と実験を行なうために、 「仮のNISサーバ」からのサービスを受けるように設定しなおします.

  1. IP アドレスは固定にする.

    もし、DHCP になっていたら、次の手順で IP アドレスを固定します. なお、プライベートアドレスを使っても、実験に支障はありません. 他の人と同じ IP アドレスを使わないこと.

    [アプリケーション]→[システム設定]→[ネットワーク]
    
    【ネットワーク設定】デバイスのタブから起動中のデバイスをダブルクリック
    【イーサネットデバイス】自動的にIPアドレス設定を取得のチェックをはずし、
    固定のIPアドレス設定にチェック
    
  2. domainname の実行

    domainname コマンドを実行して、「仮のNISサーバ」で設定した NIS ドメイン名を設定しておく

    domainname <「仮のNISサーバ」で設定した NIS ドメイン名>
    
  3. /etc/yp.conf の確認

    「「仮のNISサーバ」で設定した NIS ドメイン名」と 「「仮のNISサーバ」の IP アドレス」 を /etc/yp.conf に正しく設定する.

    domain <「仮のNISサーバ」で設定した NIS ドメイン名> server <「仮のNISサーバ」の IP アドレス>
    
  4. /etc/sysconfig/network

    次のような1行を含むように設定しなおす

    NISDOMAIN=<「仮のNISサーバ」で設定した NIS ドメイン名>
    
  5. ypbind を再起動

    設定ファイルを書き換えたので、ypbind を再起動してみます. エラーメッセージが出ていないことを確認.

    /sbin/service ypbind stop
    /sbin/chkconfig ypbind off
    /sbin/service ypbind start
    /sbin/chkconfig ypbind on
    
  6. (オプション) ypbind が稼働中であることを確認

    GNOME デスクトップにおいて「アプリケーション」→「システム設定」→「サーバ設定」→「サービス」 を実行して, ypbind が稼働中であることを確認する. (稼働していなければ, チェックして稼働させる).

  7. (オプション) 再起動し、エラーメッセージが出ないことの確認

    sync
    sync
    sync
    sync
    sync
    reboot
    

(オプション) 準備 (仮のNISサーバ側)

エラー回避のため, 念のため「仮のNISサーバ」において下記の確認作業を行ないます.

  1. domainname の確認

    domainname コマンドを実行して、クライアントで設定していた「「仮のNISサー バ」で設定した NIS ドメイン名」と一致していることを確認する.

    domainname
    
  2. /etc/yp.conf の確認

    クライアントで設定していた」で設定した NIS ドメイン名」, 「「仮のNISサーバ」で設定した NIS ドメイン名」と一致していることを確認する.

    domain <「仮のNISサーバ」で設定した NIS ドメイン名> server <「仮のNISサーバ」の IP アドレス>
    
  3. /etc/sysconfig/network

    クライアントで設定していた「「仮のNISサー バ」で設定した NIS ドメイン名」と一致していることを確認する.

    NISDOMAIN=<「仮のNISサーバ」で設定した NIS ドメイン名>
    
  4. もし, 上記の 1, 2, 3 でNISサーバの設定ファイル内に間違いが見つかったら修正し, 「NISサーバ設定」における「11. ypserv, yppasswdd, ypxfrd の起動」及 びそれ以降の全手順をやり直す.

動作確認手順 (NISクライアント側)

  1. ypbind が稼働中か?

    /usr/sbin/rpcinfo -p localhost
     # portmapper, ypbind についての情報が表示される
    /usr/sbin/rpcinfo -u localhost ypbind
     # ypbind についての情報が表示される
    ypcat hosts
     # NIS マスタサーバで管理されている host が表示される
    
  2. ypwhich コマンドを実行してみる

    ypwhich
    

    ここで設定した「仮のNISサーバ」が表示されることを確認.

  3. ypcat passwd, ypcat group, ypcat hosts で動作確認

    ypcat passwd
    ypcat group
    ypcat hosts
    

    正しく表示されれば成功

  4. passwd, group, hosts 以外は配布していないことの確認

    ypcat rpc
    ypcat services
    ypcat netid
    ypcat protocols
    ypcat mail
    

    表示されないことを確認

  5. yppasswdd の動作確認手順

    ps -e | grep yppasswd で、rpc.yppasswddが出るか?
    

    クライアント側で

    yppasswd <ユーザー名>
    

    マスターサーバの root パスワード

    type : ユーザーのパスワード
    retype : ユーザーのパスワード
    

    でパスワードが変更できるかどうか

    できなければ、"The NIS password has not been changed ..." 等のメッセージ が出るはず。

  6. LAN 外からは利用できないことの確認手順 → 先送り

(オプション) 実験手順(2)

本物の NIS マスタサーバからデータ(passwd, group. hosts)を持ってきて、NIS 管 理コマンドの再度の練習を行なう. なお、パスワード形式は、MD5 と DES があり、形式が合致していないとこの 手順は使えません.

上記の「実験手順(1)」の続きです. 「実験手順(1)」で使った仮のNIS マスタサーバマシンと NIS クライアントマシンを そのまま使う. 今度の実験では, 本物の NIS マスタサーバから本物のデータ(passwd, group. hosts)を持っ てきて仮のNIS マスタサーバマシンに置き、動作確認と練習を行ないます.

NIS マスタサーバの入れ換えの練習ではありません.

調べておく事項

動作確認手順 (「本物のNISサーバ」での作業)

「本物のNISサーバ」での作業です.

  1. データ転送の準備

    cd /var/yp/`domainname`
    tar -cvf /var/tmp/yp.tar ./yp
    

動作確認手順 (「仮のNISサーバ」での作業)

「仮のNISサーバ」での作業です.

  1. 「仮のNISサーバ」での作業

    「本物のNISサーバ」からファイルを持ってくる

    cd /tmp
    sftp 「本物のNISサーバ」の IP アドレス:/var/tmp/a.tar
    tar -xvf a.tar
    

    cd /var/yp
    cd `domainname`
    pwd
    
    ここでは 必ず、/var/yp/<「仮のNISサーバ」で設定した NIS ドメイン名> になっていることを確認する

    「本物のNISサーバ」から持ってきたファイルを置く

    rm -f passwd
    rm -f group
    rm -f hosts
    cp /tmp/`domainname`/passwd .
    cp /tmp/`domainname`/group .
    cp /tmp/`domainname`/hosts .
    
  2. make の実行

    cd /var/yp
    make
     # エラーメッセージが出ないことを確認
    
  3. 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とNIS クライアントマシンは兼用可能かも(?)。

  1. domainname の実行

    domainname コマンドを実行して、「マシンBで設定した NIS ドメイン名」を設定しておく

    domainname <マシンBで設定した NIS ドメイン名>
    
  2. /etc/yp.conf の確認

    「マシンBで設定した NIS ドメイン名」と 「NISスレーブサーバにするマシン(マシンA)の IP アドレス」を /etc/yp.conf に設定し、NISの要求がマシンAに行くように設定する

    domain <マシンBで設定した NIS ドメイン名> server <NISスレーブサーバにするマシン(マシンA)の IP アドレス>
    
  3. /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 をしても良い。


以下、記述中

  1. 仮のNIS マスタサーバマシンにおける動作確認と練習
  2. NIS クライアントマシンを使った動作確認と練習

まとめ

NIS マスタサーバにおいて、エディタ等での編集を必要とするファイルは下記の通り.