Powered by FreeBSD

NIS, NFSによるSunOS4.1.3との資源の共有化

最終更新:


FreeBSDマシンをサーバーとして、ネットワーク上のSunOSマシンにユーザー情報をNISで提供することにより、ユーザーの一元管理をすることができます。
また、NFSでホームディレクトリとメールスプールを共有することにより、各ユーザーも同じ環境でワークステーションを使うことができるので便利です。


当教室(東北大学理学部地圏環境科学科)では、以前からSunOS4.1.3をサーバーとしてNIS, NFSを走らせてきました。しかし最近はワークステーションよりもPCの互換機の方が安価で高いスペックを追求できるので(^^;、大容量のHDDを接続したPCのサーバーにSunのワークステーションをぶらさげる事にしました。

作業内容としては、以下の通りです。


(1)準備

パスワードファイルの書式は、4.3BSDより前とそれ以降では異なっています。従って、SunOS4.1.3のpasswdファイルはFreeBSDではそのまま使えません。具体的には、SunOSのpasswdファイルのgroup IDフィールドとgcosフィールドの間にclass, change, expireの各フィールドが追加されています。

FreeBSDのオンラインマニュアル passwd(5) では、awkによってパスワードファイルの書式を変換するスクリプトが紹介されています。今回はperlを使って変換しました。

sunのpasswdファイルをFreeBSDのmaster.passwdファイルの形式に変換するスクリプト

!/usr/local/bin/perl

$file1 = $ARGV[0];
$file2 = $ARGV[1];
$class = '';
$change = '0';
$expire = '0';

unless(open(FILE1,$file1)){
        die "input file open failure\n";
}

unless(open(FILE2,">$file2")){
        die "output file open failure\n";
}

while($line = ){
        chop($line);
        @fields = split(/:/,$line);
        $line = join(':',$fields[0],$fields[1],$fields[2],$fields[3],$class,$change,$expire,$fields[4],$fields[5],$fields[6]);
        print FILE2 "$line\n";
}

close(FILE1);
close(FILE2);

作成したファイルは、NISの設定時に使います。/etc/にコピーする前に、以下のNFSの設定を完了させましょう。

あと、/etc/groupファイルもFreeBSDマシンにコピーします。


(2)サーバー側FreeBSDマシンのNFSの設定

以下のファイルを編集します。

/etc/hosts.equivの設定

NFSクライアントのホスト名を追加します。

/etc/exportsの設定

NFSで共有するディレクトリを指定します。

以下はFreeBSDのホームディレクトリとメールスプールを、ネットワークアドレス123.456.789.0, ネットマスク255.255.255.0のネットワークにつながっているマシンに公開する設定の例です。

/home -maproot=0 -alldirs -network 123.456.789.0 -mask 255.255.255.0
/var/mail -maproot=0 -alldirs -network 123.456.789.0 -mask 255.255.255.0

/etc/rc.confの設定

以下の行を編集します。

・
nfs_server_enable="YES"         # This host is an NFS server (or NO).
nfs_server_flags="-u -t 4"      # Flags to nfsd (if enabled).
・

再起動すれば、サーバー側のNFSの準備は完了です。


(3)クライアント側SunOSマシンのNFSの設定

まず、/home, /var/spool/mailディレクトリが存在することを確認します。ここにサーバーのディレクトリをマウントします。

/etc/fstabに以下の行を追加します。

サーバーのマシン名:/var/mail /var/spool/mail nfs  hard,fg,rw 0 0
サーバーのマシン名:/home     /home           nfs  hard,fg,rw 0 0

マシン名は/etc/hostsに書かれていることを前提としています。

設定が完了したら、再起動します。


(4)NFSの確認

dfコマンドなどで、クライアントにサーバーのホームディレクトリとメールスプールがマウントされている事を確認して下さい。


(5)サーバー側FreeBSDマシンのNISの設定

いよいよNISの設定に入ります。設定箇所は以下の通りです。

DESのインストール

NIS用の暗号化ルーチン・DESをインストールします。これは例えば

ftp://ftp4.jp.freebsd.org/pub/FreeBSD-nonUS/2.2.6-RELEASE/des/

にあります。

インストールは、ファイルを全てダウンロードした後、ダウンロードしたディレクトリで

sh install.sh
を実行するだけです。

パスワードファイル

現在のパスワードファイルをバックアップしてから、(1)で作成したmaster.passwdファイルをコピーします。

#cp  /etc/master.passwd /etc/master.passwd.org
#mv /etc/passwd /etc/passwd.org
#cp WORKDIR/master.passwd /etc/

/var/yp/Makefile

Makefileは書き込み禁止になっているので、編集するためには一度モード変更をします。

SunやHP等をクライアントにする場合は、シャドウパスワードをOFFにする必要があります。クライアントがLinuxやFreeBSD2.1.x以降の場合はそのままで構いません。

#cd /var/yp
#chmod 644 Makefile
#vi Makefile
・
UNSECURE = "True"        <---デフォルトではコメントアウトされている。SunやHP等をクライアントにする時は必要。
・
PASSWD    = $(YPSRCDIR)/passwd     <---デフォルトでは(YPDIR)になっている。
.if !defined(MASTER_PASSWD)
MASTER    = $(YPSRCDIR)/master.passwd <---デフォルトでは(YPDIR)になっている。
・

編集したら、再びモード変更して書き込み不可にし、makeします。

#chmod 444 Makefile
#make

/etc/passwdが正しく生成されたか、確認して下さい。

/etc/rc.conf

以下の項目を編集します。

・
nisdomainname="startrek"        <----NISのドメインネームを指定する。ここではスタートレック!
nis_server_enable="YES"         .
・
nis_yppasswdd_flags="-t /etc/master.passwd -s -f"  <----yppasswdコマンドが見に行くファイル名を指定する。
・

以上、全て終わったらサーバーを再起動します。


(6)クライアント側SunOSマシンのNISの設定

クライアント側で設定する項目は以下の通りです。

/etc/passwd

末尾に以下の行を追加します。

+::0:0:::

/etc/group

末尾に以下の行を追加します。

+:

/etc/defaultdomain

先ほどサーバーのrc.confで指定したドメインネームを書きます。

#vi /etc/defaultdomain
startrek

/var/yp/Makefile

確認する箇所は一カ所のみです。以下の行がコメントアウトされていないことを確認します。

B=-b

以上、設定が終わったらクライアントマシンのypbindを起動し、パスワード情報がきているかどうか確認します。

#ypbind
#ypcat passwd

パスワード情報が表示されればOKです。クライアントマシンを再起動します。


(7)NISの確認

クライアントマシンからログインして、サーバーマシンと同じパスワードでログインでき、サーバーマシンのホームディレクトリがそのまま使える事を確認して下さい。


(8)実際の運用上の注意


前ページに戻る


COPYRIGHT 1999 Hiroki Hayashi ALL RIGHTS RESERVED.