NIS, NFSによるSunOS4.1.3との資源の共有化 |
最終更新:
FreeBSDマシンをサーバーとして、ネットワーク上のSunOSマシンにユーザー情報をNISで提供することにより、ユーザーの一元管理をすることができます。
また、NFSでホームディレクトリとメールスプールを共有することにより、各ユーザーも同じ環境でワークステーションを使うことができるので便利です。
当教室(東北大学理学部地圏環境科学科)では、以前からSunOS4.1.3をサーバーとしてNIS, NFSを走らせてきました。しかし最近はワークステーションよりもPCの互換機の方が安価で高いスペックを追求できるので(^^;、大容量のHDDを接続したPCのサーバーにSunのワークステーションをぶらさげる事にしました。
作業内容としては、以下の通りです。
パスワードファイルの書式は、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マシンにコピーします。
以下のファイルを編集します。
NFSクライアントのホスト名を追加します。
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
以下の行を編集します。
・ nfs_server_enable="YES" # This host is an NFS server (or NO). nfs_server_flags="-u -t 4" # Flags to nfsd (if enabled). ・
再起動すれば、サーバー側の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に書かれていることを前提としています。
設定が完了したら、再起動します。
dfコマンドなどで、クライアントにサーバーのホームディレクトリとメールスプールがマウントされている事を確認して下さい。
いよいよNISの設定に入ります。設定箇所は以下の通りです。
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/
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が正しく生成されたか、確認して下さい。
以下の項目を編集します。
・ nisdomainname="startrek" <----NISのドメインネームを指定する。ここではスタートレック! nis_server_enable="YES" . ・ nis_yppasswdd_flags="-t /etc/master.passwd -s -f" <----yppasswdコマンドが見に行くファイル名を指定する。 ・
以上、全て終わったらサーバーを再起動します。
クライアント側で設定する項目は以下の通りです。
末尾に以下の行を追加します。
+::0:0:::
末尾に以下の行を追加します。
+:
先ほどサーバーのrc.confで指定したドメインネームを書きます。
#vi /etc/defaultdomain startrek
確認する箇所は一カ所のみです。以下の行がコメントアウトされていないことを確認します。
B=-b
以上、設定が終わったらクライアントマシンのypbindを起動し、パスワード情報がきているかどうか確認します。
#ypbind #ypcat passwd
パスワード情報が表示されればOKです。クライアントマシンを再起動します。
クライアントマシンからログインして、サーバーマシンと同じパスワードでログインでき、サーバーマシンのホームディレクトリがそのまま使える事を確認して下さい。
COPYRIGHT 1999 Hiroki Hayashi ALL RIGHTS RESERVED.