NIS マスタサーバの設定
【概要】Ubuntu 24.04 LTSにおけるNISマスタサーバ構築手順。passwd/group/hostsファイルを管理・配布するため、ypservなど関連デーモンを設定・起動する。ip addr, systemctl, aptなどUbuntuコマンドを用い、ypinitとmakeでNISマップを生成、ypcatで確認する。主要設定ファイル(/etc/yp.conf,/var/yp/securenets等)とクライアント/スレーブ設定、動作確認を解説する。
設定では,LAN内の問い合わせに応じるが、LAN外の問い合わせには応じない。passwd, group, hosts は管理するが、これら3つのファイル以外は配布しない。ypserv, ypxfrd, yppasswdd を動かす必要がある。
事前に調べておく事項
- NIS ドメイン名
- NIS マスタサーバの IP アドレス
ip addr で調べる必要がある。 - NIS マスタサーバのホスト名
hostname コマンドで調べる必要がある。 - DNS サーバ IP のアドレス
- DNS ドメイン名 (NIS ドメイン名とは別物なので混同しないこと)
NIS サーバソフトのインストール
- インストール
Ubuntu 24.04 LTSでは、以下のコマンドでNISサーバパッケージ(ypserv)をインストールする。
sudo apt install ypserv
- updatedb の実行
locate コマンドによる検索を最新の状態にするため、updatedb コマンドを実行する。
sudo updatedb
NIS データの作成練習
NIS マスタサーバで passwd, group, hosts の3つを管理する練習を行う。ここでの手順では、passwd, group, hosts のごく簡単なサンプルを作成する。
- NIS ファイル用のディレクトリ作成
NISで配布する元のファイル(プレーンテキスト形式)を配置するためのディレクトリを作成する。
sudo mkdir /var/yp/nis.inputs
- NIS 用 passwd 作成
sudo vi /var/yp/nis.inputs/passwd
passwd の文法は通常の /etc/passwd と類似するが、NISで配布されるパスワードフィールドは通常「*」などのプレースホルダとする。実際のパスワードは影のファイルやyppasswddで管理される。文法は次のようになる。
----- <ユーザ名>:*:20001:800:<ユーザの説明>:/home/<ユーザ名>:/bin/tcsh -----
- NIS 用 hosts 作成
sudo vi /var/yp/nis.inputs/hosts
hosts には、次のように NIS マスタサーバ自身についての情報を含めておく必要がある。
----- 127.0.0.1 localhost <NIS マスタサーバの IP アドレス> <NIS マスタサーバのホスト名>.<DNS ドメイン名> <NIS マスタサーバのホスト名> -----
- NIS 用 group 作成
sudo vi /var/yp/nis.inputs/group
group の文法は通常の /etc/group と類似する。文法は次のようになる。
----- 8th:*:800: -----
NIS マスタサーバ設定
- 事前の確認
- NIS マスタサーバ上の /etc/resolv.conf が正しく設定されていること(必須)
- NIS マスタサーバ上の /etc/hosts の中身に間違いがないこと(必須)
次のような2行を含む必要がある。
127.0.0.1 localhost <NIS マスタサーバの IP アドレス> <NIS マスタサーバのホスト名>.<DNS ドメイン名> <NIS マスタサーバのホスト名>
- /var/yp/ypservers
このファイルは ypinit コマンドによって生成される。NISクライアントから参照されるNISサーバ(マスタ自身やスレーブ)のホスト名をリストする。
-
/var/yp/Makefile を編集
NISマップを生成するためのMakefileを編集する。YPSRCDIR システム, YPPWDDIR システムをデフォルトの /etc から、作成した /var/yp/nis.inputs に変更する。また、all の行を変更して、passwd, group, hosts のみマップを生成するようにする。MERGE_PASSWD, MERGE_GROUP はローカルの /etc/passwd, /etc/group とマージしないように false に変更する。
sudo vi /var/yp/Makefile # (1) MERGE_PASSWD を変更 (ローカルファイルをマージしない) # MERGE_PASSWD=true MERGE_PASSWD=false # (2) MERGE_GROUP を変更 (ローカルファイルをマージしない) # MERGE_GROUP=true MERGE_GROUP=false # (3) YPSRCDIR システムを変更 (マップ元ディレクトリ) # YPSRCDIR= /etc YPSRCDIR= /var/yp/nis.inputs # (4) YPPWDDIR システムを変更 (yppasswddが参照するディレクトリ) # YPPWDDIR= /etc YPPWDDIR= /var/yp/nis.inputs # (5) all を変更 (生成するマップを指定) # all: passwd group hosts rpc services netid protocols mail \ all: passwd group hosts \ # # all: passwd group hosts rpc services netid protocols mail \
- domainname の確認と設定
現在のNISドメイン名を確認する。
domainname # 正しい NIS ドメイン名が表示されることを確認する
もし、NIS ドメイン名が正しくないときは、次のコマンドを実行して変更しておく。Ubuntu 24.04 LTS では hostnamectl コマンド(hostnamectl set-nis-domain <NISドメイン名>)や /etc/defaultdomain ファイルでも設定できる。
sudo domainname <NISドメイン名>
- ypdomainname コマンド実行
NISドメイン名を確認する。
ypdomainname # 正しい NIS ドメイン名が表示されることを確認する
もし、NIS ドメイン名が正しくないときは、次のコマンドを実行して変更しておく。
sudo ypdomainname <NISドメイン名>
- /etc/yp.conf の確認
NISクライアントがNISサーバを見つけるための設定ファイルである。マスタサーバ自身もクライアントとして機能させる場合は、正しく設定されていることを確認する (違っていれば修正する)。
sudo vi /etc/yp.conf domain <NIS ドメイン名> server <NISサーバの IP アドレス>
- NIS ドメイン名設定 (Ubuntu 24.04 LTS)
Ubuntu 24.04 LTS では /etc/sysconfig/network ファイルは存在しない。システム起動時にNISドメイン名を設定するには、/etc/defaultdomain ファイルにドメイン名を記述する方法がある。
-
rpc.yppasswdd の設定
rpc.yppasswdd デーモンはNISパスワードの変更要求を処理する。Ubuntu 24.04 LTS では /etc/sysconfig/yppasswdd ファイルは存在しない。デーモンの起動オプション(例: yppasswd コマンドでシェルの変更もできるようにする)は、systemd の unit ファイルや /etc/default/yppasswdd で行う。YPPASSWD_ARGS を指定して -e chsh -e chfn オプションを渡す必要がある。
-
次のファイルは、最終行に空行が入っていると make コマンド実行時にエラーになることがあるため、確認して不要な空行は削除する。
- /var/yp/nis.inputs/passwd
- /var/yp/nis.inputs/hosts
- /var/yp/nis.inputs/group
- /var/yp/securenets
- /var/yp/ypservers
- NIS サービスの停止 (ypbind, ypserv, yppasswdd, ypxfrd)
設定変更や ypinit の実行前に、NIS関連サービスが起動している場合は停止しておく。特に ypbind が動いていると ypinit -m が正しく動作しない場合がある。
停止の際、サービスが動いていないことを示すエラーメッセージが出ても無視できる。
sudo systemctl stop ypbind sudo systemctl disable ypbind sudo systemctl stop ypxfrd sudo systemctl disable ypxfrd sudo systemctl stop yppasswdd sudo systemctl disable yppasswdd sudo systemctl stop ypserv sudo systemctl disable ypserv
- ypserv, yppasswdd, ypxfrd の起動
NISマスタサーバとして必要なサービスを起動する。rpcbind、ypserv、ypxfrd、yppasswdd の順で起動することが推奨されるが、systemdが依存関係を解決する場合もある。起動時にエラーメッセージが出ないことを確認する。
# rpcbind は多くの場合、自動で起動・有効化されている # sudo systemctl start rpcbind # sudo systemctl enable rpcbind sudo systemctl start ypserv sudo systemctl enable ypserv sudo systemctl start ypxfrd sudo systemctl enable ypxfrd sudo systemctl start yppasswdd sudo systemctl enable yppasswdd
エラーが出たら、設定ファイルを見直して、サービス起動手順をやり直す。
- (オプション) NIS サービスの稼働確認
systemctl status コマンドや ps コマンド、rpcinfo コマンドで NIS 関連サービス (ypserv, ypxfrd, yppasswdd) が稼働中であることを確認する。
systemctl status ypserv ypxfrd yppasswdd ps -e | grep yp rpcinfo -p localhost # portmapper, ypserv, ypxfrd, yppasswdd 等が表示されるか確認
- ypinit の実行
NISドメインの初期化と、マスタサーバ自身の情報を登録する。ypinit -m コマンドを実行する。
cd /var/yp sudo /usr/lib/yp/ypinit -m # 対話形式で NIS サーバホスト名のリスト入力を求められる
次のような表示を確認し、NIS マスタサーバのホスト名が表示されていることを確認する。
--- 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: cent1.db.is.kyushu-u.ac.jp Is this correct? [y/n: y] y
- make の実行
Makefile に基づき、/var/yp/nis.inputs ディレクトリ内のファイルを元にNISデータベースファイル(マップファイル)を生成する。Makefileの設定ミスや、ypserv が稼働していない場合にエラーが出る。Makefile の変更をチェックする意味も兼ねて、個別に make hosts, make passwd, make group を実行する。
cd /var/yp sudo make hosts sudo make passwd sudo make group
make においてエラーが出たら、設定ファイルを見直して、サービス起動や ypinit などの手順をやり直す。
(参考) 今後、/var/yp/nis.inputs 下のファイルを書き換えたら、そのたびに、「cd /var/yp; sudo make」を実行する必要がある(サーバの再起動などを手動で行なう必要はない)。
- /etc/nsswitch.conf の確認
システムがユーザー、グループ、ホスト名などの情報を検索する際の参照順序を定義するファイルである。NIS マスタサーバ自身をNISクライアントとして機能させたい場合、/etc/nsswitch.conf の passwd, group, host の行に nis を含めておく必要がある。
sudo vi /etc/nsswitch.conf # 例: # passwd: files nis systemd # group: files nis systemd # hosts: files nis dns
- ypbind の起動の試み
ypbind はNISクライアントサービスであり、マスタサーバ自身をクライアントとして使う場合に必要となる。NISサーバを見つけてバインドする。起動してみて、起動時にエラーメッセージが出ないことを確認する。
sudo systemctl start ypbind sudo systemctl enable ypbind
ヒント: ファイアウォールがNIS関連のポートをブロックしている場合がある。Ubuntu 24.04 LTS では ufw や nftables が使用される。NISに必要なポート(portmapper: 111/tcp,udp, ypserv: 833/tcp,udpなど)を開放する必要がある。ファイアウォールを完全に無効化することはセキュリティリスクを高めるため非推奨である。
# 例: ufw を停止する場合 (非推奨、セキュリティリスクあり) # sudo systemctl stop ufw # sudo systemctl disable ufw # 例: ufw でポートを開放する場合 (推奨) # sudo ufw allow 111/tcp # sudo ufw allow 111/udp # sudo ufw allow 833/tcp # sudo ufw allow 833/udp # sudo ufw enable # ufw が無効な場合
(オプション)パスワードの格納形式の確認
yppasswd コマンドでNISパスワードを変更する際に使用されるパスワード暗号化形式を確認する。DES または MD5 が使用される場合があるが、Ubuntu 24.04 LTS では SHA512 が推奨されており、古い形式はセキュリティ上の理由から非推奨である。
-
PAM設定ファイルでパスワード形式を設定する。Ubuntu 24.04 LTS では /etc/pam.d/common-password ファイルなどが使用される。
sudo vi /etc/pam.d/common-password # password の行で暗号化形式を指定する # 例: 推奨されるSHA512を使用する場合 (NISパスワードも同様に設定されるかは環境による) # password [success=1 default=ignore] pam_unix.so obscure sha512 # 例: 古い形式 (非推奨) # password sufficient pam_unix.so nullok use_authtok md5 shadow nis # password sufficient pam_unix.so nullok use_authotk des shadow nis
パスワードハッシュに $1$ が付いているかで MD5 か判別できる。SHA512 の場合は $6$ が付く。DES は特定の形式を持たない。
NIS マスタサーバにおけるアクセス制限の設定
NISサービスへのアクセス制限には /var/yp/securenets ファイルを使用するのが最も重要である。どのIPアドレス/ネットワークからのアクセスを許可するかを制御する。tcpwrappers(hosts.denyとhosts.allow)によるアクセス制限も可能だが、Ubuntu 24.04 LTSではデフォルトで有効でない場合があり、推奨はファイアウォールによる設定である。また、/etc/ypserv.conf ファイルでも特定のマップやホストに対するアクセスルールを設定できる。
- /etc/hosts.deny (tcpwrappers を使用する場合)
portmap, ypserv 等に対するアクセスを拒否するルールを設定する。portmap, ypserv の行が無ければ書き加える。
sudo vi /etc/hosts.deny --- portmap: ALL ypserv: ALL ---
- /etc/hosts.allow (tcpwrappers を使用する場合)
portmap, ypserv 等に対するアクセスを許可するルールを設定する。portmap, ypserv の行が無ければ書き加える。(XXX,YYY,ZZZ.0/NN の部分は 許可する LAN のネットワークアドレスとサブネットマスクのビット長を書く。
sudo vi /etc/hosts.allow --- portmap: 127.0.0.1 XXX.YYY.ZZZ.0/NN ypserv: 127.0.0.1 XXX.YYY.ZZZ.0/NN ---
- /var/yp/securenets (最も重要)
NISサービスにアクセスできるネットワークアドレスとサブネットマスクを設定する。「255.255.255.0 XXX.YYY.ZZZ.0」の形式で記述する。XXX.YYY.ZZZ は LAN のネットワークアドレスである。
sudo vi /var/yp/securenets ----- 255.255.255.255 127.0.0.1 255.255.255.0 XXX.YYY.ZZZ.0 -----
- 再起動
設定変更を反映させるためにシステムを再起動する。`sync` コマンドはファイルシステムバッファをディスクに書き出す。
sudo sync sudo reboot
実験手順(1)
動作確認及び NIS 管理コマンドの練習を行う。
仮のNIS マスタサーバマシンと NIS クライアントマシンの 2台を用意し、ドメイン名の設定(/etc/defaultdomain, /etc/yp.conf など)は、NIS マスタサーバマシンと NIS クライアントマシンの間で矛盾が無いようにしておく必要がある (NIS マスタサーバマシンと NIS クライアントマシンで違う NIS ドメイン名が設定されていたりしないこと)。
仮のNIS マスタサーバマシンと NIS クライアントマシンは同一ネットワークにつないで実験する。なお、NIS クライアントマシンは2台以上でも下記の手順で実験できる。
調べておく事項
- 「仮のNISサーバ」の IP アドレス
- 「仮のNISサーバ」で設定した NIS ドメイン名
- NISクライアントマシンの IP アドレス(固定)
- NISクライアントマシン/「仮のNISサーバ」がつながるネットワークのデフォルトゲートウエイアドレス
- NISクライアントマシン/「仮のNISサーバ」がつながるネットワークのサブネットマスク
準備 (NISクライアント側)
現在立ち上げた「仮のNISサーバ」の動作確認と実験を行うために、「仮のNISサーバ」からのサービスを受けるように設定する。
- IP アドレスを固定にする。
もし、DHCP になっていたら、Ubuntu 24.04 LTS のネットワーク設定(例: Settings > Network GUIツールや netplan 設定ファイル)で IP アドレスを固定する。プライベートアドレスを使っても実験に支障はないが、他の人と同じ IP アドレスを使わないこと。
# Ubuntu 24.04 LTS のGUI設定例 (Settings > Network) # 対象のネットワークアダプターを選択し、IPv4またはIPv6タブでManual設定を行う # あるいは netplan 設定ファイルを編集する
- domainname の実行
domainname コマンドを実行して、「仮のNISサーバ」で設定した NIS ドメイン名を設定しておく必要がある。
sudo domainname <「仮のNISサーバ」で設定した NIS ドメイン名>
- /etc/yp.conf の確認
NISクライアントがどのNISサーバ(マスタまたはスレーブ)に問い合わせるかを設定する。 「「仮のNISサーバ」で設定した NIS ドメイン名」と「「仮のNISサーバ」の IP アドレス」を /etc/yp.conf に正しく設定する。
sudo vi /etc/yp.conf domain <「仮のNISサーバ」で設定した NIS ドメイン名> server <「仮のNISサーバ」の IP アドレス>
- NIS ドメイン名設定 (Ubuntu 24.04 LTS)
Ubuntu 24.04 LTS では /etc/sysconfig/network ファイルは存在しない。システム起動時にNISドメイン名を設定するには、/etc/defaultdomain ファイルにドメイン名を記述する。
- ypbind を再起動
設定ファイルを書き換えたので、ypbind を再起動してみる。エラーメッセージが出ていないことを確認する。
sudo systemctl stop ypbind sudo systemctl start ypbind
- (オプション) ypbind が稼働中であることを確認
systemctl status ypbind コマンドや、gnome-shell環境であればシステム設定のGUIツールでサービスの稼働状況を確認できる(稼働していなければ、チェックして稼働させる)。
- (オプション) 再起動し、エラーメッセージが出ないことの確認
設定変更後、システムを再起動してNISクライアント設定が正しく反映されるか確認する。
sudo sync sudo reboot
(オプション) 準備 (仮のNISサーバ側)
エラー回避のため、念のため「仮のNISサーバ」において下記の確認作業を行う。
- domainname の確認
domainname コマンドを実行して、クライアントで設定していた「「仮のNISサーバ」で設定した NIS ドメイン名」と一致していることを確認する。
domainname
- /etc/yp.conf の確認
「「仮のNISサーバ」で設定した NIS ドメイン名」と「「仮のNISサーバ」の IP アドレス」が一致していることを確認する。
cat /etc/yp.conf domain <「仮のNISサーバ」で設定した NIS ドメイン名> server <「仮のNISサーバ」の IP アドレス>
- NIS ドメイン名設定 (Ubuntu 24.04 LTS)
クライアントで設定していた「「仮のNISサーバ」で設定した NIS ドメイン名」と一致していることを確認する(/etc/defaultdomainなど)。
- もし、上記の 1, 2, 3 でNISサーバの設定ファイル内に間違いが見つかったら修正し、「NISサーバ設定」におけるサービス起動や make 等の手順をやり直す。
動作確認手順 (NISクライアント側)
NISクライアントとしてNISマスタサーバから情報を取得できるか確認する。
- ypbind が稼働中か?
クライアント側の ypbind サービスが正常に起動し、NISサーバにバインドできているか確認する。
/usr/sbin/rpcinfo -p localhost # portmapper, ypbind についての情報が表示されることを確認する /usr/sbin/rpcinfo -u localhost ypbind # ypbind についての情報が表示されることを確認する ypcat hosts # NIS マスタサーバで管理されている hosts 情報が表示されることを確認する
- ypwhich コマンドを実行してみる
現在クライアントがバインドしているNISサーバ(ypbind が接続しているサーバ)を確認する。
ypwhich
ここで設定した「仮のNISサーバ」のホスト名またはIPアドレスが表示されることを確認する。
- ypcat passwd, ypcat group, ypcat hosts で動作確認
NIS マップからユーザー、グループ、ホストの情報を取得できるか確認する。
ypcat passwd ypcat group ypcat hosts
設定したNISデータが正しく表示されれば成功である。
- passwd, group, hosts 以外は配布していないことの確認
Makefileで指定したマップ以外が配布されていないことを確認する。
ypcat rpc ypcat services ypcat netid ypcat protocols ypcat mail
これらのマップの情報は表示されないことを確認する。
- yppasswdd の動作確認手順
rpc.yppasswdd デーモンが稼働しているか確認する。このデーモンはNISパスワードの変更要求を受け付ける。
ps -e | grep yppasswd # rpc.yppasswdd が表示されるか確認する
クライアント側でユーザー自身のパスワードを変更してみる。rpc.yppasswdd の設定によっては、NISパスワード変更がローカルのrootパスワード無しで可能になる場合があるため、セキュリティ設定には注意が必要である。
yppasswd <ユーザー名>
プロンプトに従い新しいパスワードを入力する。
type : ユーザーの新しいパスワード retype : ユーザーの新しいパスワード (確認用)
パスワードが変更できるかどうか確認する。
変更に失敗した場合は、"The NIS password has not been changed ..." 等のメッセージが出るはずである。
- LAN 外からは利用できないことの確認手順 → 先送り
(オプション) 実験手順(2)
本物の NIS マスタサーバからデータ(passwd, group. hosts)を持ってきて、NIS 管理コマンドの再度の練習を行う。なお、パスワード形式は、MD5 と DES があり、形式が合致していないとこの手順は使えない可能性がある。
上記の「実験手順(1)」の続きである。「実験手順(1)」で使った仮のNIS マスタサーバマシンと NIS クライアントマシンをそのまま使う。今度の実験では、本物の NIS マスタサーバから本物のデータ(passwd, group. hosts)を持ってきて仮のNIS マスタサーバマシンに置き、動作確認と練習を行う。
これは NIS マスタサーバの入れ換えの練習ではない。
調べておく事項
- 「本物のNISサーバ」の IP アドレス
- 「仮のNISサーバ」の IP アドレス
- 「仮のNISサーバ」で設定した NIS ドメイン名
- NISクライアントマシンの IP アドレス(固定)
- NISクライアントマシン/「仮のNISサーバ」がつながるネットワークのデフォルトゲートウエイアドレス
- NISクライアントマシン/「仮のNISサーバ」がつながるネットワークのサブネットマスク
動作確認手順 (「本物のNISサーバ」での作業)
「本物のNISサーバ」での作業である。
- データ転送の準備
本物のNISサーバの /var/yp/$(domainname) ディレクトリにあるNISマップの元ファイル(passwd, group, hosts)をtarで固める。
cd /var/yp/$(domainname) sudo tar -cvf /var/tmp/yp_source.tar passwd group hosts
動作確認手順 (「仮のNISサーバ」での作業)
「仮のNISサーバ」での作業である。
- 「仮のNISサーバ」での作業
「本物のNISサーバ」から tar ファイルを持ってきて展開し、仮のNISサーバの /var/yp/nis.inputs ディレクトリに配置する。
cd /tmp sftp <本物のNISサーバの IP アドレス>:/var/tmp/yp_source.tar ./ tar -xvf yp_source.tar
cd /var/yp/nis.inputs
「本物のNISサーバ」から持ってきたファイルを置く。元のファイルは上書きされる。
rm -f passwd group hosts # 既存ファイルを削除 cp /tmp/passwd . # 展開されたファイルは /tmp ディレクトリ直下にある想定 cp /tmp/group . cp /tmp/hosts .
- make の実行
配置したファイルを元に、NISマップファイルを再生成する。
cd /var/yp sudo make # エラーメッセージが出ないことを確認する
- ypcat passwd, ypcat group, ypcat hosts で動作確認
更新されたNISマップから情報が取得できるか確認する。
ypcat passwd ypcat group ypcat hosts
本物のNISサーバのデータが正しく表示されれば成功である。
実験手順(3)
NIS スレーブサーバのごく簡単な動作確認を行う。NISは古い技術であり、現代ではより高機能でセキュアなLDAPなどの代替技術が推奨される場合が多い。
仮のNISスレーブサーバにするマシン(マシンA)と、NISマスターサーバにするマシン(マシンB)を用意し、ドメイン名の設定(/etc/defaultdomain, /etc/yp.conf など)は、これら2台のサーバと、NIS クライアントマシンの間で矛盾が無いようにしておく必要がある (NIS マスタサーバマシンと NIS クライアントマシンで違う NIS ドメイン名が設定されていたりしないこと)。
これらマシンは同一ネットワークにつないで実験する。
調べておく事項
スレーブサーバにするNIS(マシンA)とマスターサーバにするNIS(マシンB)を決めることが必要である。
- NISスレーブサーバにするマシン(マシンA)の IP アドレス
- NISマスターサーバにするマシン(マシンB)の IP アドレス
- NISマスターサーバにするマシン(マシンB)のホスト名
- NISクライアントマシンの IP アドレス
- マシンBで設定した NIS ドメイン名
準備(NIS クライアントマシン)
マシンAとNIS クライアントマシンは兼用可能かもしれない。
- domainname の実行
domainname コマンドを実行して、「マシンBで設定した NIS ドメイン名」を設定しておく必要がある。
sudo domainname <マシンBで設定した NIS ドメイン名>
- /etc/yp.conf の確認
クライアントがスレーブサーバ(マシンA)に問い合わせるように設定する。「マシンBで設定した NIS ドメイン名」と「NISスレーブサーバにするマシン(マシンA)の IP アドレス」を /etc/yp.conf に設定する。
sudo vi /etc/yp.conf domain <マシンBで設定した NIS ドメイン名> server <NISスレーブサーバにするマシン(マシンA)の IP アドレス>
- NIS ドメイン名設定 (Ubuntu 24.04 LTS)
Ubuntu 24.04 LTS では /etc/sysconfig/network ファイルは存在しない。システム起動時にNISドメイン名を設定するには、/etc/defaultdomain ファイルにドメイン名を記述する。
準備(マシンA - スレーブサーバ)
マシンAがマシンBのNISスレーブサーバとして動くための初期設定を行う。ypinit -s コマンドを使用する。
cd /var/yp sudo /usr/lib/yp/ypinit -s <マシンBのホスト名> sudo ls /var/yp
コマンド実行後、ls /var/yp でディレクトリの中身を確認する。NISドメイン名のディレクトリが作成されているはずである。 ・・・ (ア)
準備(マシンB - マスタサーバ)
マスタサーバ(マシンB)側の設定を行う。スレーブサーバへのマップ自動転送を有効化し、必要に応じてスレーブサーバを認識させる。一応 ypxfrd が起動しているかどうかを確認する。
ps -e | grep ypxfrd # rpc.ypxfrd が表示されるか確認
Makefile を編集し、NOPUSH=false に変更することで、マップ更新時に自動的にスレーブサーバへ転送する設定にする。スレーブサーバを追加した場合は /var/yp/ypservers ファイルにエントリを追加する必要がある。
cd /var/yp sudo vi Makefile # NOPUSH=true の行を NOPUSH=false に変更する ---------------------- #NOPUSH=true NOPUSH=false ---------------------- # スレーブサーバーを追加した場合は /var/yp/ypservers にエントリを追加 # 例: sudo vi /var/yp/ypservers に マシンAのホスト名を追加する # Makefile および /var/yp/ypservers の変更を反映 sudo make
スレーブサーバーを追加した場合は、念のため「cat /var/yp/ypservers」を実行し、その結果出てくるサーバリストに、マシンAが含まれていることを確認する。
cat /var/yp/ypservers
NISマスタサーバのホスト名に加えて、マシンAのホスト名が表示されることを確認する。
注意点として、NISマスタサーバを変更する(例えば、別のマシンを新しいマスタにする)場合は、スレーブサーバを再インストールする必要がある。ypservはセキュリティ上の理由から、マップの更新を同じマスターサーバからのみ受け付けないためである。
動作確認手順 (マシンA - スレーブサーバ)
スレーブサーバ(マシンA)で NIS マップファイルがマスタサーバから転送されてきているか確認する。
マシンAで ls /var/yp/$(domainname) …(イ)を実行する。
この時点で、(ア)の ypinit -s 実行時には NISドメイン名のディレクトリ内にマップファイルは無かったが、マスタサーバからの転送によって .byname, .byuid 等のマップファイルが出来ているはずである。それを確認する。
また、例えばマスタサーバの /var/yp/nis.inputs 下にある passwd 等のファイルを書き換え、マスタサーバの /var/yp 以下で make を実行し、スレーブサーバにマップが自動転送されるか確認しても良い。
以下、記述中
- 仮のNIS マスタサーバマシンにおける動作確認と練習
- NIS クライアントマシンを使った動作確認と練習
まとめ
NIS マスタサーバにおいて、エディタ等での編集を必要とする可能性のある主なファイルは下記の通りである。NIS構成ファイルのパーミッションと所有者が適切に設定されていることも確認する必要がある。
- /var/yp/nis.inputs/passwd
- /var/yp/nis.inputs/hosts
- /var/yp/nis.inputs/group
- /var/yp/ypservers
- /var/yp/Makefile
- /etc/hosts
- /etc/yp.conf
- /etc/ypserv.conf (詳細設定を行う場合)
- /etc/nsswitch.conf (マスタ自身をクライアントにする場合)
- /var/yp/securenets (アクセス制限)
- /etc/defaultdomain または hostnamectl (NISドメイン名設定)
- PAM設定ファイル (例: /etc/pam.d/common-password, パスワード形式設定)