NIS 関連の情報源や、 手元のサーバへのインストール記録などを書いています。 主に Linux 向け。
目次
まず NIS-HOWTO を見てきていただいた方のために、 kernel.org のミラー情報から。
国内では Ring Server Project が kernel.org のミラーを行っています。 NIS 関連のディレクトリは
/pub/linux/kernel.org/utils/net/NIS/
です。 上記の URL で負荷の軽いサーバが自動的に選択されますが、 サーバによってはこのディレクトリがないかもしれません。 その場合は上記 web ページから適宜探してください。
歴史的な経緯から止むを得なかったのですが、 間抜けなことに NIS のサーバは IP reachable な surf になっています。 したがって以下ではアクセス制限をするためのインストールをしてます。
以下の順に記述します。
RPC の利用が ypserv だけでしたら特に TCP-wrapper を使わなくても良いのですが、 NFS とかも使っているので作ることにしました。 最新版は 7.6 のようです。 archie で検索してみたところ、 国内ではたとえば以下に置かれていました。
ftp://ftp.chiba-u.ac.jp/pub/security/tools/tcp_wrapper/
これを make してできた libwrap.a を /usr/local/lib へ、 また各ヘッダファイルを /usr/local/include へそれぞれ移動します。
最近の Linux 配布パッケージ入っている portmap は、 ほとんどこの libwrap を使ってコンパイルされたものになっていると思いますが、 念のため作り方も書いておきます。 このあたりの詳細は Linux Security FAQ から #1 をご覧になってください。
secure な portmapper のソースは TSX-11 にあります。国内のミラーとしては
ftp://ftp.iamas.ac.jp/Linux/sources/sbin/
などがあります。ここから
を落とし、以下のように展開します。
mkdir portmap && cd portmap zcat ../portmap_3.shar.gz | unshar patch -p1 < ../portmap_3.patch
libwrap.a の置き場所は Makefile で指定します。 上述のように /usr/local/lib に置いた場合は Makefile の中身を
WRAP_DIR= /usr/local/lib
のように変更しておきます。
make clean make
で portmap, pmap_dump, pmap_set の三つのプログラムができます。 portmap は Slackware の流儀に合わせるなら /usr/sbin/rpc.portmap として、他の2つも /usr/sbin 辺りに置いておきましょう。
現在すでに動いているポートマッパがある場合は、
/usr/sbin/pmap_dump > portmap-file killall rpc.portmap /usr/sbin/rpc.portmap /usr/sbin/pmap_set < portmap-file
のようにします。 "rpcinfo -p" でリストが出るようなら OK です。 他のサーバを "rpcinfo -p <server>" で引けるかどうかも 確認しておくと良いでしょう。 起動時には rpc.portmap を実行するだけです。
続いて ypserver を作ります。ソースは kernel.org の NIS ディレクトリ に最新版があります。
ファイル名は ypserv-*.tar.gz です。 1.2.x から yppasswdd のクライアントと サーバーが同一パッケージに入るようになりました。
アーカイブを展開して INSTALL に従えば問題無く作成できると思います。 上述の tcp wrapper を用い、 yppasswd を一緒に作る場合は以下のようになります。
./configure --enable-tcp-wrapper=/usr/local --enable-yppasswd make make install
まずアクセス制限のために、/etc/hosts.deny に
portmap: ALL ypserv: ALL
という行を書きます。 そして(例えば) 192.168.1.* のホストからのアクセスを許可するようにするには、 /etc/hosts.allow に
portmap: 192.168.1. ypserv: 127.0.0.1 192.168.1.
のように記述します。 詳細は ypserv パッケージの README.secure や、 tcp-wrapper パッケージによってインストールされるマニュアル hosts_access.5 などを参照してください。
ソースディレクトリ下 etc/ypserv.conf ファイルを編集し、 /etc/ypserv.conf としてコピーします。 書式は ypserv.conf.5 のマニュアルページにあります。 Linux ユーザで shadow passwd を使っていなければ、 変更の必要は無いでしょう。
/var/yp/Makefile を編集します。特に all: ターゲットのうち、 NIS で流さないものはコメントアウトしておくようにしましょう。 また古いシステムを使っている人は、MINUID と MINGID を変更しないと うまくいかない場合があるかもしれません。
以上を作ってから、
nisdomainname MYDOMAINNAME ypinit -m
で NIS データベースの構築と ypserv の起動が行われます。 MYDOMAINNAME には他人から推測されにくい文字列を使うことが推奨されています。 (が、実際にはグループ内のユーザからは丸見えなので、あまり意味はないで しょう)。
あとは起動時に
nisdomainname MYDOMAINNAME ypserv
を実行するように /etc/rc.d/rc.inet2 あたりに記述をしておきます。
また yppasswdd に関しては
rpc.yppasswdd -p /etc/passwd -e chsh -e chfn
を起動時に実行しておきます。-e のオプションをつけないと、 ypchsh や ypchfn が使えなくなります。 また当然ですが、自分のホストの ypserver に接続できないと passwd の更新はできませんので、アクセス制限に注意して下さい。
hosts.allow と hosts.deny を利用した yppasswdd へのアクセス制限も できます。このときはカテゴリ名を yppasswdd: とします。
以下、いずれも kernel.org の NIS ディレクトリ より入手します。
まず yp-tools-*.tar.(gz|bz2) を入手し、 configure; make; make install します。
続いて ypbind です。 libc5 の場合は ypbind-*.tar.(gz|bz2) を入手し、 make; make install です。
glibc2 の ypbind は ypbind-mt-*.tar.(gz|bz2) の方になります。 configure; make; make install で作成・インストールします。
続いて設定になります。 サーバを指定するために /etc/yp.conf に以下のような内容を記述しておきます。
ypserver {servername}
servername は gethostbyname(3) によって resolve されるものなら OK ですが、IP アドレスで指定しておくことをおすすめします。
次にホスト名の解決順を指定するために /etc/host.conf を編集しておきます。 私のところでは以下のようになっています。
order hosts bind nis multi on
それぞれ
を意味します。 できれば /etc/hosts に最小限必要な記述を行い、 最初に指定しておくのが良いと思います。
glibc2 (libc6) を使っている場合には、 /etc/passwd /etc/nsswitch.conf も正しく 設定しなくてはなりません。これについては下記 NIS-HOWTO や、 最近の LDP man-pages に入っている nsswitch.conf.5 を参照して下さい。
libc-4.6.27 以上, libc-5 までをお使いの場合は、 クライアントの passwd、group の最後に "+" の行をつけます。 通常の教科書にあるように、"+:*:0:0:::" をつけると失敗します。 このあたりは libc のリリースノートや、 yp-clients の README を見て下さい。 (上記は glibc2 の "compat" モードでも使用できます)。
あとは起動時に
nisdomainname MYDOMAINNAME ypbind
を実行すれば OK です。 なお portmapper が ypbind に先立って実行されている必要があります。
現在の Linux 向け NIS の開発は ドイツ S.u.S.E. 社 の Torsten Kukuk 氏によって行われています。 関連ソフトや shadow パスワードシステムで NIS を使うときに参考になる情報などが Linux NIS(YP) Server のページに非常に見通し良くまとめられています。
NIS-HOWTO という文書も出ています。 JF プロジェクト のページには私が翻訳したもの ( テキスト版 | html 版 ) も登録されています。 Linux での NIS 開発の中心にいる Kukuk さんが メンテしてくれるようになりましたので、安心して読めます。
JM プロジェクト の配布アーカイブには、
などの和訳マニュアルが同梱されてますので、宜しければどうぞ :-)