ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 でのネームサービスおよびディレクトリサービスの作業 Oracle Solaris 11.1 Information Library (日本語) |
4. Oracle Solaris Active Directory クライアントの設定 (タスク)
デフォルト以外のマップを変更するための makedbm コマンドの使用
NIS と DNS を使用してマシンのホスト名とアドレスの検索を構成する方法
11. LDAP クライアントと Oracle Directory Server Enterprise Edition の設定 (タスク)
このセクションには次の情報が含まれます。
ユーザーは、ypcat、ypwhich、および ypmatch コマンドを使用して、マップの情報やマップに関する情報をいつでも取得できます。以降の例では、mapname はマップの正式な名前とそのニックネーム (存在する場合) の両方を指します。
マップ内のすべての値を一覧表示するには、次のように入力します。
% ypcat mapname
マップ内の鍵と値 (存在する場合) の両方を一覧表示するには、次のように入力します。
% ypcat -k mapname
マップのすべてのニックネームを一覧表示するには、次のいずれかのコマンドを入力します。
% ypcat -x % ypmatch -x % ypwhich -x
使用可能なすべてのマップとそのマスターを一覧表示するには、次のように入力します。
% ypwhich -m
特定のマップのマスターサーバーを一覧表示するには、次のように入力します。
% ypwhich -m mapname
鍵をマップ内のエントリと照合するには、次のように入力します。
% ypmatch key mapname
探している項目がマップ内の鍵でない場合は、次のように入力します。
% ypcat mapname | grep item
item は検索している情報です。ほかのドメインに関する情報を取得するには、これらのコマンドの -d domainname オプションを使用します。
デフォルト以外のドメインの情報をリクエストしているマシンに、リクエストしたドメインのバインドがない場合、ypbind は、/var/yp/binding/domainname/ypservers ファイルを参照してそのドメインのサーバーのリストを探します。このファイルが存在しない場合、ypbind は RPC ブロードキャストを送出してサーバーを検索します。この場合、検索先であるドメインのサーバーは要求元マシンと同じサブネットに存在している必要があります。
選択したマップのマスターサーバーを変更するには、まず新しい NIS マスター上にマップを構築する必要があります。古いマスターサーバー名は既存のマップ内に鍵と値のペアとして現れるため (このペアは makedbm によって自動的に挿入されます)、新しいマスターにマップをコピーしたり、ypxfr を使用して新しいマスターにコピーを転送したりするだけでは不十分です。鍵と新しいマスターサーバー名との対応づけをし直す必要があります。マップに ASCII ソースファイルが存在する場合は、このファイルを新しいマスターサーバーにコピーします。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
newmaster# cd /var/yp
そうでない場合は、ここで Makefile を編集します。この例では、sites.byname という名前のマップのエントリを追加します。
newmaster# make sites.byname
sites.byname マップを作成した Makefile のセクションをコメントアウトして、そのマップがもうそこで作成されないようにしてください。
まず、ypcat コマンドを使用して、sites.byname ファイルのコピーを分解します。次に、makedbm を使用して、分解されたバージョンを実行します。
newmaster# cd /var/yp newmaster# ypcat sites.byname | makedbm domain/sites.byname
新しいマスター上にマップを作成したあと、新しいマップのコピーをほかのスレーブサーバーに送信する必要があります。yppush を使用しないでください。これを使用すると、ほかのスレーブは新しいマスターではなく、古いマスターから新しいコピーを取得しようとします。このような動作を回避するには、一般にマップのコピーを新しいマスターサーバーから古いマスターサーバーに送り返すという方法が使用されます。これを行うには、古いマスターサーバーでスーパーユーザーになるか、同等の役割になり、次のように入力します。
oldmaster# /usr/lib/netsvc/yp/ypxfr -h newmaster sites.byname
これで、yppush を使用できます。スレーブサーバーは古いマスターサーバーを現行のマスターサーバーとして認識しているので、マップの現行バージョンを古いマスターサーバーから取得しようとします。クライアントがこの処理を行うときは、新しいマスターサーバーが現行のマスターサーバーとして指定されている新しいマップを取得します。
この方法が失敗した場合は、各 NIS サーバーに root としてログインし、上に示すように ypxfr コマンドを実行することができます。
NIS は設定ファイルを正確に構文解析します。このため NIS 管理は容易になりますが、設定ファイルおよび構成ファイルにおける変更により、NIS の動作は影響を受けます。
次のいずれかを実行する場合は、このセクションの手順を使用します。
次の点に注意してください。
NIS マスターサーバーからマップまたはソースファイルを削除しても、スレーブサーバー上の対応するマップまたはソースファイルは自動的には削除されません。スレーブサーバー上の対応するマップまたはソースファイルの削除は、NIS 管理者が手作業で行う必要があります。
新しいマップは、自動的には既存のスレーブサーバーに転送されません。新しいマップを既存のスレーブサーバーに転送するには、NIS 管理者がそのスレーブサーバーで ypxfr を実行してください。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# svcadm disable network/nis/server
# svcadm enable network/nis/server
/var/yp で提供されたデフォルトの Makefile を更新することにより、NIS 管理者のニーズを満たすことができます。マップを追加したり削除したり、一部のディレクトリの名前を変更できます。
ヒント - 将来の参照のために、変更していない、元の Makefile のコピーを保存しておいてください。
新しい NIS マップを追加するには、そのマップの ndbm ファイルのコピーを、ドメイン内の各 NIS サーバー上の /var/yp/domainname ディレクトリに取得する必要があります。通常これは、Makefile によって行われます。どの NIS サーバーをそのマップのマスターにするかを決定したあと、マップを容易に再構築できるように、マスターサーバー上の Makefile を変更します。異なるサーバーを異なるマップのマスターサーバーとして設定することも可能ですが、このようにするとたいていの場合、管理上の混乱を招きます。したがって、1 つのサーバーだけをすべてのマップのマスターサーバーとして設定するようにしてください。
通常、人間が読める形式のテキストファイルは、makedbm への入力に適したものにするために awk、sed、または grep によってフィルタリングされます。デフォルトの Makefile を参照してください。make コマンドに関する一般情報については、make(1S) を参照してください。
make が認識する依存関係の作成方法を決定する場合は、Makefile にすでに用意されているメカニズムを使用します。make では、依存ルール内の行の始まりにタブが存在するか否かが重要であることに注意してください。ほかの設定が正しくても、タブが存在しないというだけでエントリが無効になることがあります。
Makefile にエントリを追加する場合は、次の作業を行なってください。
データベース名を all ルールに追加する
time ルールを作成する
データベースのルールを追加する
たとえば、Makefile をオートマウンタ入力ファイルで動作させるには、auto_direct.time および auto_home.time マップを NIS データベースに追加する必要があります。
これらのマップを NIS データベースに追加するには、Makefile を変更する必要があります。
Makefile の先頭で定義されている変数の設定は、等号 (=) の右側にある値を変更することによって変更できます。たとえば、マップへの入力として /etc にあるファイルを使用せず、代わりに /var/etc/domainname などの別のディレクトリにあるファイルを使用する場合は、DIR を DIR=/etc から DIR=/var/etc/domainname に変更するようにしてください。また、PWDIR も PWDIR=/etc から PWDIR=/var/etc/domainname に変更するようにしてください。
これらの変数を次に示します。
DIR= passwd と shadow を除く、すべての NIS 入力ファイルを含むディレクトリ。デフォルト値は /etc です。マスターサーバーの /etc ディレクトリのファイルを NIS 入力ファイルとして使用することは望ましくないので、この値は変更しなければなりません。
PWDIR= passwd と shadow の NIS 入力ファイルを含むディレクトリ。マスターサーバーの /etc ディレクトリのファイルを NIS 入力ファイルとして使用することは望ましくないので、この値は変更しなければなりません。
次の手順では、Makefile にデータベースを追加したり削除したりする方法を説明します。
この手順を実行するには、NIS マスターサーバーがすでに構成されている必要があります。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
all: passwd group hosts ethers networks rpc services protocols \ netgroup bootparams aliases netid netmasks \ audit_user auth_attr exec_attr prof_attr \ auto_direct auto_home auto_direct.time auto_home.time
エントリの順序は任意ですが、継続行の始まりの空白はスペースではなくタブにしてください。
auto_direct: auto_direct.time auto_home: auto_home.time
auto_direct.time: $(DIR)/auto_direct @(while read L; do echo $$L; done < $(DIR)/auto_direct $(CHKPIPE)) | \ (sed -e "/^#/d" -e "s/#.*$$//" -e "/^ *$$/d" $(CHKPIPE)) | \ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/auto_direct; @touch auto_direct.time; @echo "updated auto_direct"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) auto_direct; fi @if [ ! $(NOPUSH) ]; then echo "pushed auto_direct"; fi
次に、各変数について説明します。
CHKPIPE は、結果を次のコマンドにパイプする前に、パイプ (|) の左側の操作が正常に完了したことを確認します。パイプの左側の動作が正しく行われなかった場合は、「NIS make terminated」というメッセージが表示されてプロセスは終了します。
NOPUSH は、makefile が、新しいマップをスレーブサーバーに転送するために yppush を呼び出すことを防止します。NOPUSH が設定されていない場合は、転送は自動的に行われます。
先頭にある while ループは、入力ファイル内のバックスラッシュで拡張された行をすべて削除するように設計されています。sed スクリプトは、コメントと空の行を削除します。
ほかのすべてのオートマウンタマップ (auto_home や、ほかのデフォルト以外のすべてのマップなど) でも、同じ手順に従います。
# make mapname
ここで、mapname は作成するマップの名前です。
Makefile で特定データベースのマップを作成しない場合は、Makefile を次のように編集してください。