Solaris で NIS サーバ
LAN 内の問い合わせには応じるが、LAN 外の問い合わせには応じない設定にする。 passwd, group, hosts を管理し、これら 3つのファイル以外は配布しない。 ypserv, ypxfrd, yppasswdd を動かす。
NIS は Oracle Solaris 11 の将来のアップデートで削除が予告されている機能である。 新規に構築する場合は LDAP ネーミングサービスの利用を検討する。
事前に調べておく事項
- NIS ドメイン名
- NIS サーバの IP アドレス
ifconfig コマンド(Solaris 11 では ipadm コマンド)で調べる。 - NIS サーバのホスト名
hostname コマンドで調べる。 - DNS サーバの IP アドレス
- DNS ドメイン名(NIS ドメイン名とは別のものである)
NIS データの作成
NIS サーバで passwd, group, hosts の 3つを管理する。 ここでの手順では、passwd, group, hosts の簡単なサンプルを作る。
- NIS ファイル用のディレクトリ作成
# mkdir /var/yp/nis.inputs
- NIS 用 passwd 作成
# vi /var/yp/nis.inputs/passwd
passwd の文法は次の通りである。
----- <ユーザ名>:*:20001:800:<ユーザの説明>:/home/<ユーザ名>:/bin/bash -----
- NIS 用 hosts 作成
# vi /var/yp/nis.inputs/hosts
hosts には、次のように NIS サーバ自身の情報を含める。
----- 127.0.0.1 localhost <NIS サーバの IP アドレス> <NIS サーバのホスト名>.<DNS ドメイン名> <NIS サーバのホスト名> -----
- NIS 用 group 作成
# vi /var/yp/nis.inputs/group
group の文法は次の通りである。
----- 8th:*:800: -----
NIS サーバ設定(設定ファイルと ypinit -m の実行)
- 事前の確認
- NIS サーバ上の /etc/resolv.conf が正しく設定されていること
- NIS サーバ上の /etc/hosts の内容が正しいこと
次の 2行を含むこと。NIS マスターサーバと NIS スレーブサーバがある場合は、 この 2台について書いておく。
127.0.0.1 localhost <NIS サーバの IP アドレス> <NIS サーバのホスト名>.<DNS ドメイン名> <NIS サーバのホスト名>
-
/var/yp/Makefile を編集
DIR と PWDIR をデフォルト値から /var/yp/nis.inputs に変更する。 DIR と PWDIR は、NIS が管理するデータファイルの置き場である。
さらに、all の行を変更し、passwd, group, hosts を管理し、これら 3つのファイル以外は配布しないようにする。
DNS 関係については、先頭部分の「B=-b」のコメントを外し、「B=」をコメントにする。 この設定により、NIS の hosts マップに無いホスト名の問い合わせを ypserv が DNS に転送する。
vi /var/yp/Makefile # (1) DIR を変更 # DIR= /etc # ↓ # DIR= /var/yp/nis.inputs # (2) PWDIR を変更 # PWDIR= /etc # ↓ # PWDIR= /var/yp/nis.inputs # (3) all を変更 # all: passwd group ipnodes ... # ↓ # all: passwd group hosts # (4) DNS 関係 # #B=-b # B= # ↓ # B=-b # #B=
- domainname の確認(domainname コマンド実行)
domainname # 正しい NIS ドメイン名が表示されることを確認する
NIS ドメイン名が正しくないときは、次のコマンドで変更する。
/usr/sbin/domainname <NISドメイン名>
domainname コマンドの設定は再起動で失われる。 Solaris 10 では /etc/defaultdomain に NIS ドメイン名を書いておく。 Solaris 11 では次のコマンドで SMF に設定する。
svccfg -s network/nis/domain setprop config/domainname = <NISドメイン名> svcadm refresh network/nis/domain
- ypinit -m の実行
警告(Warning)メッセージが表示されたら、内容を確認し、対処する。
cd /var/yp /usr/sbin/ypinit -m # 次のように表示されるので確認する --- servers. cent1.db.is.kyushu-u.ac.jp is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a
. next host to add: cent1.db.is.kyushu-u.ac.jp next host to add: --- # NIS サーバが正しく表示されない場合に限り、「next host to add:」に対 # して、NIS サーバ名を入れる 入力が終わったら「ctrl+D」で終了させる。
次のように表示されるので、NIS サーバ名が正しく表示されていることを確認 し、「y」で終了させる。
The current list of NIS servers looks like this: sol1 Is this correct? [y/n: y] y
- yppasswdd について
yppasswdd は /var/yp/nis.inputs のパスワードファイルを扱うように自動的に設定される (/etc/passwd とは別のファイルである)。
- NIS サーバのサービスを起動する
svcadm enable network/nis/domain svcadm enable network/nis/server
- ypserv が稼働中であることを確認
/usr/bin/rpcinfo -p
- make の実行
設定ファイルのチェックを兼ねる。 そのため make とせずに、make hosts, make passwd, make group の 3手順に分けて実行する。 設定のミスがある場合や ypserv が稼働していない場合はエラーが出る。
cd /var/yp make hosts make passwd make group
make でエラーが出たら、設定ファイルを見直し、NIS サーバのサービスの起動から後の全手順をやり直す。
今後、/var/yp/nis.inputs 下のファイルを書き換えたら、そのたびに 「cd /var/yp; make」を実行する(サーバの再起動は不要である)。
NIS サーバのサービスの起動と停止
Solaris 10 以降では SMF で管理する。起動は次のコマンドで行う。
svcadm enable network/nis/domain svcadm enable network/nis/server
停止は次のコマンドで行う。
svcadm disable network/nis/server
状態は次のコマンドで確認する。
svcs -a | grep nis
SMF で有効にしたサービスは、OS の起動時に自動的に開始される。
パスワードの格納形式の確認
NIS サーバマシン上でのパスワードのハッシュ形式を確認しておく。 形式はパスワード文字列の先頭の識別子で判別できる。識別子が無い場合は従来の DES 形式、$1$ は MD5、$5$ は SHA256、$6$ は SHA512 である。
# yppasswd で hoge ユーザの新しいパスワードを設定した後に、次のコマンドを実行 cat /var/yp/nis.inputs/passwd
既定の形式は /etc/security/policy.conf の CRYPT_DEFAULT で決まる。 DES や MD5 になっている場合は、CRYPT_DEFAULT を 5(SHA256)または 6(SHA512)に変更する。 変更後に設定したパスワードから新しい形式が使われる。
vi /etc/security/policy.conf --- CRYPT_DEFAULT=5 ---
NIS サーバにおけるアクセス制限の設定
- /var/yp/securenets
ypserv と ypxfrd が応答する範囲を指定する。 「XXX.YYY.ZZZ」の部分は LAN のネットワークアドレスを書く。
# vi /var/yp/securenets ----- 255.255.255.255 127.0.0.1 255.255.255.0 XXX.YYY.ZZZ.0 -----
設定を間違うと、NIS サーバと接続できなくなる。 接続できるかどうかは ypwhich, ypcat コマンドで確認できる。
man -s 4 securenets
- rpcbind へのアクセス制限
rpcbind で TCP Wrappers を有効にする。
svccfg -s rpc/bind setprop config/enable_tcpwrappers=true svcadm refresh rpc/bind
- /etc/hosts.deny
rpcbind の行を次のように設定する(行が無ければ書き加える)。
vi /etc/hosts.deny --- rpcbind: ALL ---
- /etc/hosts.allow
rpcbind の行を次のように設定する(行が無ければ書き加える)。 XXX.YYY.ZZZ の部分は LAN のネットワークアドレスを書く。
vi /etc/hosts.allow --- rpcbind: 127.0.0.1 XXX.YYY.ZZZ. ---
動作確認手順(NIS クライアント側)
- ypbind が稼働中かを確認する
rpcinfo | grep ypbind # ypbind についての情報が表示される
- ypwhich コマンドを実行する
ypwhich
ここで設定した NIS サーバが表示されることを確認する。
- ypcat passwd, ypcat group, ypcat hosts で動作確認
ypcat passwd ypcat group ypcat hosts
正しく表示されれば成功である。
- passwd, group, hosts 以外は配布していないことの確認
ypcat rpc ypcat services ypcat netid ypcat protocols ypcat mail
表示されないことを確認する。
- yppasswdd の動作確認
NIS サーバ側で rpc.yppasswdd が動作していることを確認する。
ps -e | grep yppasswd
クライアント側で次のコマンドを実行し、パスワードが変更できることを確認する。
yppasswd <ユーザー名>
/var/yp/nis.inputs(実データ)の準備について
- 旧 NIS サーバから持ってくる
- Solaris マシンから Solaris マシンへの移動は、passwd と shadow の両方を移動する。 FreeBSD から Solaris への移動では、shadow ファイルを作る操作が必要である。
- passwd ファイルについて: root の行は外す。 adm, ssh, apache などシステム管理用のユーザも NIS で管理しない。