NISの設定


NIS(Network Information Service)

Network Information Service (NIS) は、以前は yellow page (yp) と 呼ばれていたネットワーク上の「情報サービス」です。この「サービス」 を走らせることによって、システム管理者は、システム全体を管理するの に必要な情報、例えばユーザ名やホスト名などを、集中的かつ自動的に、 信頼生の高い方法で、更新することが出来ます。一方、ネットワーク上の クライアントは、ネットワークのどこにいても、ネットワークで共有され るデータベースから、首尾一貫した方法で、同一の情報を得ることが出来 ます。

システム構成

本研究室では、以前は SunOS4.1.1 を NIS マスターサーバ、SunOS4.1.4 を NIS スレーブサーバとして、NIS を運用してきました。それ後、都合 により NIS の運用を停止してきましたが、再び、今度は FreeBSD を NIS のサーバとして、NIS の運用をすることにしました。
本研究室の LAN は、2つのセグメントが混在している環境なので、片方の セグメントに FreeBSD3.1-Release で NIS マスターサーバ、もう片方の セグメントに FreeBSD2.2.8-Release で NIS スレーブサーバを立ち上げ ることにしました。将来はどちらか一方ののセグメントに統一するつもりです。 なお、NIS クライアントには Solaris,SunOS,Linux,FreeBSD などが存在します。

DES

FreeBSD や SunOS 等の UNIX ではパスワードを平文で保存すると、他の ユーザにパスワードがばれてしまうために暗号化して保存します。一般的 には DES(Data Encryption Satnderd)というアメリカ商務省標準局が定め た方式によって暗号化されていますが、これはアメリカの国内法によって 輸出が禁止されているため、アメリカから外に持ち出すことが出来ません。 よって、FreeBSD のアメリカ国外版には暗号化ライブラリには DES ではなく、 MD5 という一方向性ハッシュ関数を用いたものが用いられています。そのため、 Sun などのようなパスワードの暗号化に DES を使用している OS を NIS サーバや クライアントにする場合には、パスワードを照会する時に暗号化の方式に互換性 がないと認証できませんので、FreeBSD には DES をインストールしておく必要 があります。

DESキットのインストール

DES 化対象の FreeBSD に対応したバージョンの国際版 DES キットをダウンロード します。以下の URL から FreeBSD のバージョンに合わせてダウンロードします。 ftp://ftp4.jp.freebsd.org/pub/FreeBSD-nonUS/
例えば、NIS マスターサーバにする FreeBSD3.1-Release だったら、 ftp://ftp4.jp.freebsd.org/pub/FreeBSD-nonUS/3.1-RELEASE/des/ 以下にあるファイルをまるごと任意のディレクトリにダウンロードします。

次に root 権限で vipw コマンドを実行して、root のパスワードを空にします。
% su
Password:
# vipw
root:$1$peTsWZ....:0:0::0:0:root...:/bin/csh
↓
root::0:0::0:0:root...:/bin/csh
ダウンロードした DES キットは、DES と Kerberos のそれぞれのソースと バイナリからなります。キットの置いてあるディレクトリで ./install.sh を実行すれば、まず、バイナリ(/sbin/init などの実行ファイルと /usr/lib/lib*crypt* などのライブラリ、他に man ファイルなど)を 展開し、ついでにソースも展開するか聞いてきます。これらを全てインストール しても良いのですが、ここでは DES のソースとバイナリだけインストール します。DES キットをダウンロードしたディレクトリで、
# cat ssecure.?? | tar --unlink -xpzf - -C /usr/src
# cat des.?? | tar --unlink -xpzf - -C /
を実行します。
インストールしたら、ライブラリが DES のものに切替えられているか確認します。 NIS マスターサーバにする FreeBSD3.1-Release では、
% cd /usr/lib
% ls -la lib*crypt*
lrwxrwxrwx  1 root  wheel     13 Jul  9 18:53 libcrypt.a@ -> libdescrypt.a
lrwxrwxrwx  1 root  wheel     14 Jul  9 18:53 libcrypt.so@ -> libdescrypt.so
lrwxrwxrwx  1 root  wheel     16 Jul  9 18:53 libcrypt.so.2@ -> libdescrypt.so.2
lrwxrwxrwx  1 root  wheel     15 Jul  9 18:53 libcrypt_p.a@ -> libdescrypt_p.a
-r--r--r--  1 root  wheel  13018 Feb 16  1999 libdescrypt.a
lrwxrwxrwx  1 root  wheel     16 Jul  9 18:53 libdescrypt.so@ -> libdescrypt.so.2
-r--r--r--  1 root  wheel  12989 Feb 16  1999 libdescrypt.so.2
-r--r--r--  1 root  wheel  14750 Feb 16  1999 libdescrypt_p.a
-r--r--r--  1 root  wheel   6198 Feb 15  1999 libscrypt.a
lrwxrwxrwx  1 root  wheel     14 Jul  4 14:23 libscrypt.so@ -> libscrypt.so.2
-r--r--r--  1 root  wheel   7607 Feb 15  1999 libscrypt.so.2
のようになっています。上記のように、/usr/lib にあるシンボリックリンク libcryptXX が、libdescryptXX を指していれば OK です。libdescryptXX は存在 するが、libcryptXX にリンクが張られていなければ、リンクを張り直します。 libdescryptXX が存在しないならば MD5 しか使えません。

以上でリブートすれば DES 対応そのものは終了です。リブート後に root のパスワードを再設定します。

パスワードフィールドのDES化

DES キットをインストールしただけでは、またはインストール後も passwd コマンド などでパスワードを変更しただけでは、/etc/master.passwd などのパスワード フィールドが MD5 から DES へ切り替わらないようです。最初に MD5 でパスワード フィールドが作成されたなら、ずっと MD5 のままです。
ここで、FreeBSD のパスワードフィールドには、次の 2 種類があります。 DES キットをインストールしていなければ、MD5 によるものしか扱えません。DES キットをインストールしてあれば、両方のパスワードが扱え、同じパスワードファイル に MD5 なパスワードフィールドを持つユーザと、DES なパスワードフィールドを 持つユーザが混在していても大丈夫です。
このため、DES なパスワードフィールドに統一するには、root で vipw コマンド を実行し、DES なパスワードフィールドにしたいユーザのパスワードフィールドから $1$ を削除し、passwd コマンドで再度、パスワードを設定します。
% su
Password:
# vipw
sakai:$1$nPM7mP....:1001:20::0:0:Nobuyuki Sakai:/home/sakai:/usr/local/bin/tcsh
↓
sakai:nPM7mP....:1001:20::0:0:Nobuyuki Sakai:/home/sakai:/usr/local/bin/tcsh
# passwd sakai
MD5 によるパスワードフィールドは、他の OS では通用しないのが普通です。 他の OS で動作しているシステムとパスワード情報をやり取りするには、DES による 暗号化でパスワードフィールドを統一しておく必要があります。

NISマスターサーバ

NIS マスターサーバには FreeBSD3.1-Release を使用します。

NISスレーブサーバ

NIS スレーブサーバには FreeBSD2.2.8-Release を使用します。

NISクライアント

FreeBSD

SunOS

Solaris

Linux

Linux には多数のディストリビューションがあり、ディストリビューションごとに 設定方法は異なりますが、ここでは Vine Linux 1.1 に対して NIS クライアントの 設定を行う方法を説明します。

戻る

sakai@oak.eg.t.kanazawa-u.ac.jp
Last modified: Sun Nov 28 05:45:44 JST 1999