NISサーバ

NISサーバとは、Network Infomation Serverといい、TCP/IP上で コンピュータの情報を共有するサービスである。 これを使うことにより、パスワードファイルを一括管理したり、 groupファイルやaliasesファイル、hostsファイルの共有が可能になる。

もどる

ダウンロードとインストール

RedHatのパッケージにはすでに、サーバとクライアントのソフトが 入っている。ypserv,ypbind,yp-toolsをインストールしておけばよい。 入っていなければ以下のようにインストールしておく。

最新版のソースは、www.kernel.orgダウンロードサイトから、 ftp://ftp.kernel.org/pub/linux/utils/net/NIS を手繰ればでてくる。 日本のミラーサイトもあるのでそちらから落してきてもよい。

また、NISを使うにはportmapperを使う必要があるのでそれもインストールする。 rpm名はportmapである。 portmapはRPC(遠隔手続き呼出)というサーバクライアントシステムを実現する プログラムである。

もどる

関連ファイル

RedHat 7.2のRPMをインストールしたときの関連ファイル。

/etc/ypserv.confNISサーバの設定
/etc/yp.confNISクライアントの設定
/etc/rpcportmapの設定ファイル
/proc/sys/kernel/domainameNISのドメイン名が入っている。
/var/yp/securenetNISを利用するネットワークの範囲
/var/yp/MakefileNISのデータベースの設定をする
/usr/lib/yp/ypinitypのデータベースを作成するプログラム
/var/yp/domainnameデータベースが作成されるディレクトリ
/etc/host.conf名前を解決するための設定をするファイル
/var/yp/nicknamesNISのニックネーム変換ファイル
NISサーバの設定

○portmapの起動

まずは、portmapを起動する。設定は、特にデフォルトのままで 必要ない。

# /etc/rc.d/init.d/portmap start
portmapperを起動中: [  OK  ]
	

ちゃんと起動されているかrpcinfoで確認する。

# rpcinfo -p
   プログラム バージョン プロトコル ポート
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
	

portmapperと表示されていればOK。 これが、他のプログラムとのportのbindを行なってくれる。

rpcinfoは他のマシンからも参照できる。 もし、他のマシンから確認できない場合は、ポートが塞がれている可能性がある。 iptablesを使ってsunrpcのポートを開けてあげるようにする。 sunrpcのポート番号は110である。

○NISのドメイン名の設定

NISのドメイン名を設定する。 NISドメイン名は、ネットワークのドメイン名とは違うので適当に決める。

# ypdomainname alps_nis
# ypdomainname
alps_nis
	

/etc/sysconfig/networkにNISDOMAIN=""という項目があると思うので そこにNISドメイン名を書いておけば、起動時に自動的にドメイン名を 設定することができる。 ちなみに、現在の、ドメイン名は/proc/sys/kernel/domainname に格納されて保存されていて、上記コマンドで上書きされる。

○セキュリティの強化

いろいろな情報いろいろなところに流してしまうのは非常に危険なので NISを利用できる範囲を限定する。また、iptables(やTCP_WRAPPER)などを使って、 portmapが利用できる範囲を限定した方がよい。

NISの範囲を限定するには、/var/yp/securenetsファイルを編集する。

#
# securenets    This file defines the access rights to your NIS server
#               for NIS clients. This file contains netmask/network
#               pairs. A clients IP address needs to match with at least
#               one of those.
#
#               One can use the word "host" instead of a netmask of
#               255.255.255.255. Only IP addresses are allowed in this
#               file, not hostnames.
#
# Always allow access for localhost
255.0.0.0       127.0.0.0

# This line gives access to everybody. PLEASE ADJUST!
255.255.255.0   192.168.1.0
	

上記のようにローカルネットワーク範囲内に限定する。

NISで流すサービスを限定するには/var/yp/Makefileの中の

# If you don't want some of these maps built, feel free to comment
# them out from this list.

all:  passwd group hosts rpc services netid protocols mail \
        # netgrp shadow publickey networks ethers bootparams printcap \
        # amd.home auto.master auto.home auto.local passwd.adjunct \
	

上記部分をコメントしたり外したりするとよい。

○ypservの立ち上げ

NISサーバを起動する。

# /etc/rc.d/init.d/ypserv start
YPサーバサービスを起動中: [  OK  ]

○NISのデータベースの作成

ypinitを使ってデータベースを作成する。 このときypservが立ち上がってないと作成できないので、 立ち上がっているかどうか確認する。

# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which will run NIS
servers.  yari.bigforest.hn.org 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 <control D>.
        next host to add:  yari.bigforest.hn.org
        next host to add:  <control-D>を押す。
The current list of NIS servers looks like this:

yari.bigforest.hn.org

Is this correct?  [y/n: y]  y
We need some  minutes to build the databases...
Building /var/yp/apls_nis/ypservers...
Running /var/yp/Makefile...
gmake[1]: 入ります ディレクトリ `/var/yp/apls_nis'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating services.byservicename...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating mail.aliases...
gmake[1]: 出ます ディレクトリ `/var/yp/alps_nis'
	

こうして、/var/yp/alps_nisにデータベースが作成される。

○NISのユーザ追加

NISのユーザ追加は、サーバ側にまずユーザを追加して、それを NISに反映させる。ユーザの追加方法は、 こちらで簡単に説明していますので 参照ください。

ユーザ追加したあとNISに登録するには、/var/yp/に移動して、makeするだけである。

# cd /var/yp
# make
gmake[1]: 入ります ディレクトリ `/var/yp/alps_nis'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating netid.byname...
gmake[1]: 出ます ディレクトリ `/var/yp/alps_nis'

○yppasswdの起動

NISを経由してpasswardの更新をできるようにするには、 yppasswdを立ち上げなければならない。passwdとchsh,chfnの 情報を変更するためにyppasswd,ypchsh,ypchfnが用意されており、 サーバが立ち上がっていれば、 クライアントでこれを使って情報を変更できる。

# /etc/rc.d/init.d/yppasswdd 
YPパスワードサービスを起動中: [  OK  ]
	

このままでは、passwdしか有効ではないので、 chsh chfnを有効にする。 それには、/etc/sysconfig/networkに以下を加える。

YPPASSWDD_ARGS="-e chsh -e chfn"

引数の説明は、 man rpc.yppasswddで参照して欲しい。

NISクライアントの設定

NISクライアントの設定をする。クライアントでもportmapperを立ち上げておく。

○NISドメイン名の設定

これはNISサーバの設定と同じである。

# ypdomainname alps_nis
# ypdomainname
alps_nis
	

これも/etc/sysconfig/networkに書いておけば、起動時に設定が行なわれる。

○NISサーバのIPアドレス設定

NISサーバのIPアドレスを設定する。NISサーバが決まっている場合は、 そのIPアドレスを設定しておくとよい。 /etc/yp.confで設定する。

# /etc/yp.conf - ypbind configuration file
# Valid entries are
#
#domain NISDOMAIN server HOSTNAME
#	Use server HOSTNAME for the domain NISDOMAIN.
#
#domain NISDOMAIN broadcast
#	Use  broadcast  on  the local net for domain NISDOMAIN
#
#ypserver HOSTNAME
#	Use server HOSTNAME for the  local  domain.  The
#	IP-address of server must be listed in /etc/hosts.
#
ypserver 192.168.1.1

もしサーバのアドレスを設定しなかった場合は、 ブロードキャストで問い合わせを送って 返答があったところから情報をもらう。

○ホスト名の解決

/etc/host.confでホスト名の解決順番を決めることができる。 order で順番を決める 。

order hosts, bind,nis

それぞれの意味は以下のとおり。

hosts
/etc/hostsで名前を解決する。
bind
NAMEサーバで名前を解決する。
nis
NISサーバで名前を解決する。

nisで名前を解決の必要がない場合は、指定しなくてもよい。

○ypbindのスタート

全ての設定が終了したら、ypbindを立ち上げて、 クライアントでNISを利用できるようにする。

# /etc/rc.d/init.d/ypbind start
NISドメインにバインド中: [  OK  ]
NISドメインサーバを検索中
	

○NISの動作確認

ypcatを使って動作を確認することができる。/var/yp/nicknamesに 参照できるNISマップのニックネームがあるのでそれを指定すると 参照ができる。

# ypcat passwd
・・・
moke:!!:506:507::/home/moke:/bin/bash
Test:!!:502:502::/home/Test:/bin/bash
・・・
	

といった感じで参照できる。

ypchfnを試してみる。

$ ypchfn
Changing NIS account information for ohmori on yari.bigforest.hn.org.
Please enter password:

Changing full name for ohmori on yari.bigforest.hn.org.
To accept the default, simply press return. To enter an empty
field, type the word "none".
Name [Kenji Ohmori]: Kenji Ohmori
Location [hoe]: hoehoe
Office Phone [hoe]: 999-999-9999 
Home Phone [hoe]: 888-989-9999

The GECOS information has been changed on yari.bigforest.hn.org.
$ finger ohmori
Login: ohmori                           Name: Kenji Ohmori
Directory: /home/ohmori                 Shell: /bin/bash
Office: hoehoe, 999-999-9999            Home Phone: 888-989-9999
On since Sat Apr 20 11:24 (JST) on tty1    9 hours 45 minutes idle
Last login Sat Apr 20 20:26 (JST) on pts/7 from yari
No mail.
No Plan.
	

上記のように変更が反映されているのがみれる。


Kenji Ohmori
Last modified: Tue May 31 01:59:23 JST 2005