NIS(Network Infomation Server)サーバーの設定
Red Hat Linuxのページトップへ
コンピュータの情報を共有して、パスワードファイルを一括で管理したり、 groupファイルやaliasesファイル、hostsファイルの共有をしたりできる
ypserv
ypbind
yp-tools
portmapper(portmap)
が必要
関連ファイル
/etc/ypserv.conf | NISサーバの設定 |
/etc/yp.conf | NISクライアントの設定 |
/etc/rpc | portmapの設定ファイル |
/proc/sys/kernel/domainame | NISのドメイン名 |
/var/yp/securenet | NISを利用するネットワークの範囲 |
/var/yp/Makefile | NISのデータベースの設定をする |
/usr/lib/yp/ypinit | ypのデータベースを作成するプログラム |
/var/yp/domainname | データベースが作成されるディレクトリ |
/etc/host.conf | 名前を解決するための設定をするファイル |
/var/yp/nicknames | NISのニックネーム変換ファイル |
メインメニュー → システム設定 → 認証
または
authconfig-gtk
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
[ドメイン名]
# ypdomainname
[ドメイン名]
/etc/sysconfig/networkにNISDOMAIN=""という項目があると思うので そこにNISドメイン名を書いておけば、起動時に自動的にドメイン名を 設定することができる。 ちなみに、現在の、ドメイン名は/proc/sys/kernel/domainname に格納されて保存されていて、上記コマンドで上書きされる。
# gedit /etc/sysconfig/network
○セキュリティの強化
いろいろな情報いろいろなところに流してしまうのは非常に危険なので NISを利用できる範囲を限定する。また、iptables(やTCP_WRAPPER)などを使って、 portmapが利用できる範囲を限定した方がよい。
NISの範囲を限定するには、/var/yp/securenets(/usr/share/doc/ypserv-2.8/securenets)ファイルを編集する。
# cp /usr/share/doc/ypserv-2.8/securenets /var/yp/securenets
# gedit /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 |
192.168.1.5 のようにIPだけでも可
/var/yp/securenetsが空か存在しない場合 (デフォルトインストールの場合は該当します)、NIS はすべてのネットワークをリッスンします。
上記のようにローカルネットワーク範囲内に限定する。
NISで流すサービスを限定するには/var/yp/Makefileの中の
# gedit /var/yp/Makefile
109行目
# 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
.
next host to add: [マスターサーバのホスト名]
next host to add: <control-D>を押す。
The current list of NIS servers looks like this:
[マスターサーバのホスト名]
Is this correct? [y/n: y] y
We need some minutes to build the databases...
Building /var/yp/[ドメイン名]/ypservers...
Running /var/yp/Makefile...
gmake[1]: 入ります ディレクトリ `/var/yp/[ドメイン名]'
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/[ドメイン名]'
こうして、/var/yp/[ドメイン名]にデータベースが作成される。
ここで[マスターサーバのホスト名]部分が『localhost.localdomain』となっている場合は
/etc/hostsの設定を変更する
このままではクライアントでのyppasswdコマンドが使えない
# gedit /etc/hosts
127.0.0.1 localhost.localdomain localhost [マスターサーバのホスト名]
↓
127.0.0.1 [マスターサーバのホスト名] localhost.localdomain localhost
上のように修正して、もう一度ypinitを実行する
○NISのユーザ追加
NISのユーザ追加は、サーバ側にまずユーザを追加して、それを NISに反映させる。ユーザの追加方法は、 こちらで簡単に説明していますので 参照ください。
ユーザ追加したあとNISに登録するには、/var/yp/に移動して、makeするだけである。
# cd /var/yp
# make
gmake[1]: 入ります ディレクトリ `/var/yp/[ドメイン名]'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating netid.byname...
gmake[1]: 出ます ディレクトリ `/var/yp/[ドメイン名]'
○yppasswdの起動
NISを経由してpasswardの更新をできるようにするには、 yppasswdを立ち上げなければならない。passwdとchsh,chfnの 情報を変更するためにyppasswd,ypchsh,ypchfnが用意されており、 サーバが立ち上がっていれば、 クライアントでこれを使って情報を変更できる。
# /etc/rc.d/init.d/yppasswdd start
YPパスワードサービスを起動中: [ OK ]
このままでは、passwdしか有効ではないので、 chsh chfnを有効にする。 それには、/etc/sysconfig/networkに以下を加える。
YPPASSWDD_ARGS="-e chsh -e chfn"
chfn はフルネームを変えるコマンド、chsh はシェルを変えるコマンドで、 NIS ではそれぞれ ypchfn, ypchsh となります
引数の説明は、 man rpc.yppasswddで参照して欲しい。
# chkconfig --add ypserv
# chkconfig ypserv on
# chkconfig --add yppasswdd
# chkconfig yppasswdd on
実行するには、次のラインを/etc/sysconfig/networkに追加して下さい。:
YPSERV_ARGS="-p 834"
YPXFRD_ARGS="-p 835"
次のIPTablesルールを実行することにより、 ポートに対してサーバーがリッスンする ネットワークを特定することができます。
iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 834 -j DROP
iptables -A INPUT -p ALL -s! 192.168.0.0/24 --dport 835 -j DROP
NISクライアントの設定
まずファイアウォールを開放しないとダメ
NISクライアントの設定をする。クライアントでもportmapperを立ち上げておく。
○NISドメイン名の設定
これはNISサーバの設定と同じである。
# ypdomainname [接続するドメイン名]
# ypdomainname
[接続するドメイン名]
これも/etc/sysconfig/networkに書いておけば、起動時に設定が行なわれる。
# gedit /etc/sysconfig/network
○NISサーバのIPアドレス設定
NISサーバのIPアドレスを設定する。NISサーバが決まっている場合は、 そのIPアドレスを設定しておくとよい。 /etc/yp.confで設定する。
# gedit /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で名前を解決の必要がない場合は、指定しなくてもよい。
# gedit /etc/hosts
192.168.1.1 [マスターサーバのホスト名]
上を追記する
これをしないとyppasswdが使えない
○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
・・・
passwdおよびgroupファイル
次に必要なものが,/etc/passwd と /etc/group ファイルの編集です.
両方のファイルの最後に,以下のを挿入します.
# vipw /etc/passwd
+::::::
# vi /etc/group
nsswitch.confファイル
ネットワークスイッチファイル(/etc/nsswitch.conf)は情報へのアクセス要求が来たときに行う検索の順番を決定するものです.このファイルを以下部分を以下に示すように編集します.
# gedit /etc/nsswitch.conf
33行目
passwd: nis files
group: nis files
shadow: nis files
hosts: dns nis files
初めは上の三つがcompatになっているがそれでは正常に動かないため上に示すように設定しないといけません.
passwd: compat
group: compat
# For libc5, you must use shadow: files nis
shadow: compat
passwd_compat: nis
group_compat: nis
shadow_compat: nis
以上の設定を行えばNISは起動できるようになります.
マシンブート時に自動的にデーモンを立ち上げるために、以下のように/etc/rc.confを設定します。
nisdomainname="hoge-net"
nis_client_enable="YES"
nis_client_flags=""
これで、全て終了です。
スタートアップスクリプトへの登録
# chkconfig --add ypbind
# chkconfig ypbind on
ホストの確認
# ypwhich
192.168.1.1
# ypwhich -m
[マスターサーバのホスト名]
Red Hat Linuxのページトップへ