NIS

NIS とは、ある限られたグループ(netgroup)内で情報を共有しようというものである。 例えば、/etc/passwd, /etc/group を共有することで認証の統一を図れたり、 /etc/auto.master などを共有することで、automounter の設定ファイルを共有 できる。 それらのファイルは各マシンが個々に持っていてもいいが、変更の度に全マシン の設定を同期させるのは面倒である。 そのためにこれまで多くの UNIX ドメインで使われてきたのが NIS である。 しかし、network 上を暗号化なしに情報が垂れ流されるため、近頃は排斥される 傾向にある。 個人的には LDAP 化して欲しい。

NIS で一元管理する情報は以下の通り。

上2つは、NIS でよく共有されるのがユーザーとグループの設定ファイルである。 /etc/auto.master は automounter の設定ファイルである。 automounter とは、アクセスがあると自動的にマウントしてくれるもので、 NFS や CD-ROM など、常にアクセスしないデバイスやファイルに対して使われることが多い。 NFS はネットワークで storage を共有するもので、ネットワークにかける負荷 も大きい。 そのため、常にマウントしておくのはリソースの無駄なため、 automount でもってアクセスのある時だけマウントさせる。 default では 60 秒アクセスがないと unmount される。

NIS server の設定

MEG-ICEPP では、NIS サーバを boss にしている。 boss を NIS サーバ とするためには次の file を変更しなければならない。 NIS サーバの設定を GUI ではしないので注意。

NIS のクライアントの設定ファイルである /etc/yp.conf を次のように設定する。 ちなみに、boss は NIS サーバだが、同時にクライアントでもある。

#
# yp.conf       Configuration file for the ypbind process. You can define
#               NIS servers manually here if they can't be found by
#               broadcasting on the local net (which is the default).
#
#               See the manual page of ypbind for the syntax of this file.
#
# IMPORTANT:    For the "ypserver", use IP addresses, or make sure that
#               the host is in /etc/hosts. This file is only interpreted
#               once, and if DNS isn't reachable yet the ypserver cannot
#               be resolved and ypbind won't ever bind to the server.

domain iceppstu server boss

/etc/ypserv.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.254.0           133.11.24.0
以前は /etc/passwd や /etc/group に NIS を使うおまじない (+::0:0::: とか +:) を追加したが、RedHat などの最近の distribution では そんな煩雑なことはしなくて良くなった。 ただ、setup コマンドを用いて、NIS を選べば良いだけである。
# $Id: auto.master,v 1.2 1997/10/06 21:52:03 hpa Exp $
# Sample auto.master file
# Format of this file:
# mountpoint map options
# For details of the format look at autofs(8).
/u      auto.u
/s      auto.s
/net    auto.net
#/net -hosts -nosuid
#/asis  auto.asis
###
### /etc/auto.u
###
### 21/Jun/2001 K.Ozone
### 22/Jul/2001 H.Nishiguchi
### 12/mar/2002 K.Ozone
### 04/Aug/2003 K.Ozone
### 24/Nov/2003 K.Ozone Don't use TAB as a delimitor.

###### ICEPP PC users
# Mori Lab.
hajime -fstype=nfs,rw   emerald:/scratch/hajime
sawada -fstype=nfs,rw   umemaru:/scratch1/sawada
mitty -fstype=nfs,rw    santos:/work3/mitty
pekochan -fstype=nfs,rw mexico:/home/pekochan
muegamma -fstype=nfs,rw mexico:/home/muegamma
meg -fstype=nfs,rw      columbia:/scratch2/meg
kotajima -fstype=nfs,rw columbia:/scratch2/kotajima
pochi -fstype=nfs,rw    mexico:/home/pochi
uchiyama -fstype=nfs,rw umemaru:/scratch2/uchiyama
natori -fstype=nfs,rw   santos:/work1/natori
deguchi -fstype=nfs,rw  emerald:/scratch/deguchi
nisimura -fstype=nfs,rw emerald:/scratch/nisimura 

# Kobayshi Lab.
nanjyo -fstype=nfs,rw   pekoe:/home/nanjyo

# Staffs
mihara -fstype=nfs,rw  santos:/work1/mihara
wataru -fstype=nfs,rw  columbia:/scratch2/wataru
ozone -fstype=nfs,rw    maxim:/scratch1/ozone

# OBs (Partially To be Removed)
miyazawa -fstype=nfs,rw columbia:/work/miyazawa

boss の auto.s を新規作成する。 auto.s は scratch 領域用の automount table である。 /scratch そのものを mount させるのは好ましくなく、 /scratch/meg/ などを作り、それを mount させるようにする。 書式は key option locateion の通り。

man 5 autofs
を参照されたし。 例えば
muegamma1 -fstype=nfs,rw boss:/scratch/muegamma
とする。key(この場合、muegamma1)の命名ルールは適当で、とりあえず作っ た順に番号をつけてある。 で、この場合、各マシンで /s/muegamma1/ に boss:/scratch/muegamma/ が automount される。 automount の特徴として、ls などの参照コマンドを使ってはじめてマウントさ れるので、マウント前に shell 上で
# /s/ [TAB]
と補完を催促しても表示されない。

###
### /etc/auto.s
###
### 21/Jun/2001 K.Ozone
### 04/Aug/2003 K.Ozone

# User's scratches 
# MEG
muegamma1 -fstype=nfs,rw boss:/scratch/muegamma
muegamma2 -fstype=nfs,rw mexico:/scratch1/muegamma
muegamma3 -fstype=nfs,rw mexico:/scratch2/muegamma
muegamma4 -fstype=nfs,rw maxim:/scratch3/muegamma
muegamma5 -fstype=nfs,rw mexico:/scratch3/muegamma
ozone1 -fstype=nfs,rw    boss:/work2/ozone1
ozone3 -fstype=nfs,rw    maxim:/scratch2/ozone
ozone4 -fstype=nfs,rw    maxim:/scratch4/ozone
ozone5 -fstype=nfs,rw    maxim:/scratch5/ozone
meg1 -fstype=nfs,rw      columbia:/scratch1/meg1
meg2 -fstype=nfs,rw      columbia:/scratch2/meg2
meg3 -fstype=nfs,rw      santos:/work1/meg3
meg4 -fstype=nfs,rw      santos:/work1/meg4
pochi1 -fstype=nfs,rw    assam:/scratch1/pochi1
pochi2 -fstype=nfs,rw    mexico:/scratch3/pochi2
psi_dc -fstype=nfs,rw    emerald:/storage2/psi_dc
pekochan -fstype=nfs,rw  mexico:/scratch2/pekochan

# though NOT recommended 
mp3j -fstype=nfs,rw              boss:/work3/mp3
mp3f -fstype=nfs,rw              boss:/work2/mp3
* -fstype=nfs,rw,nonstrict &:/

最後に、/var/yp/Makefile を作る。 default では passwd file とかしか見てくれていないと思うので、 環境に合わせて変更する。 Makefile の知識が必要です。 見て理解するのは簡単だけど、書くのは難しいかも。 全部書くのは煩わしいので ココ に up しときました。

/etc/auto.* など NIS で扱っているファイルを変更した場合は 必ずサーバー上で

cd /var/yp
make

を行ってください。 こうすることで初めて、NIS map が更新され、NIS client に更新内容が告げら れます。 /etc/passwd や /etc/group については事情が異なります。 ちなみに passwd コマンドは NIS 環境下では yppasswd にとって変わりますの で注意しましょう。 このコマンドは server に対して、大元の /etc/passwd を変更してくれという 要求をします。 server は passwd ファイルを更新しますが、 NIS map はその時には更新されません。 NIS map の更新は毎日決まった時間に行われますので、 それまでは古い password を使うことになります。 もし、今すぐにでも変更内容を反映したいなら、 boss に行って

cd /var/yp
make
service restart ypserv

とします。ypserv の restart だけでもいいかも。

client の追加

新たに PC を導入するときは /etc/netgroup に新規マシンのホスト名を追加し ます。
su -
vi /etc/netgroup
(newhostname,,)
という具合いに書けば良いでしょう。 で、更新したら
cd /var/yp
make
とすると、netgroup が更新されたというメッセージが出て、NIS map が更新さ れます。 これをしないと永遠に更新されないので注意しましょう。
service ypserv restart

これを行うことで、 netgroup に所属するマシンに周知されます。

NIS client の設定

NFS の enable

nfs は network 越しに他のマシンの disk を mount するサービスです。 netgroup に所属するマシンのみに NFS mount を許すために /etc/expoerts を例えば次のように作成する。

/                        @iceppstu-hosts(rw,sync)
/scratch1                @iceppstu-hosts(rw,sync)
/scratch2                @iceppstu-hosts(rw,sync)

他のマシンに見られたくない partition については記述する必要はないが、 全ての partition に対して設定することが望ましい。 設定したら、次のコマンドを実行して NFS を restart する。

service nfs restart
service nfslock restart

ここで出てくる nfslock とは、 nfs mount されたファイルを不意の temination(unmount, reboot等) に備え lock できるようにするサービスである。 unmount されずに HDD の電源が切れるとファイルシステムが壊れることがあるた め、そのような仕組みが用意されている。

最後に、NIS を有効にします。 RedHat では setup というコマンドが用意されているので、 これを使って設定します。

キャッシュを有効にし、NIS を使うようにします。 ドメインとサーバー名もこれと同じにします。

あと、このように MD5 と shadow password は有効にしておいてください。


K.Ozone, Sep 21th, 2005