ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 でのネームサービスおよびディレクトリサービスの作業 Oracle Solaris 11.1 Information Library (日本語) |
4. Oracle Solaris Active Directory クライアントの設定 (タスク)
特定のデータベースを使用するように /var/yp/Makefile を変更する方法
データベースを削除するために Makefile を変更する方法
NIS と DNS を使用してマシンのホスト名とアドレスの検索を構成する方法
11. LDAP クライアントと Oracle Directory Server Enterprise Edition の設定 (タスク)
NIS のインストール終了後、頻繁に更新しなければならないマップとまったく更新する必要がないマップがあることに気づく場合があります。たとえば、大企業のネットワークでは passwd.byname マップが頻繁に変更される場合があるのに対して、auto_master マップはほとんど変更されません。
「デフォルトの NIS マップ」で説明されているように、デフォルトの NIS マップのデフォルトの場所は、マスターサーバー上の /var/yp/domainname 内にあります。ここで、domainname は NIS ドメインの名前です。マップを更新する必要がある場合は、マップがデフォルトのマップか否かによって 2 つの更新手順のどちらかを使用できます。
デフォルトのマップは、ネットワークデータベースから ypinit コマンドによって作成されるデフォルトセット内のマップです。
ベンダーから購入したアプリケーションに含まれているマップ
サイト専用に作成されたマップ
テキスト以外のファイルから作成されたマップ
このセクションでは、さまざまな更新ツールの使用方法について説明します。これらは実際には、システムがすでに起動され、実行されたあとにデフォルト以外のマップを追加したり、NIS サーバーのセットを変更したりする場合にのみ使用するようになる可能性があります。
デフォルトセットに付属のマップを更新するには、次の手順を使用します。
詳細は、『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
このファイルは /etc か、または選択したほかのディレクトリ内に存在する可能性があります。
# cd /var/yp # make mapname
これにより、make コマンドは、対応するファイルに加えられた変更に従ってマップを更新します。make コマンドはまた、これらの変更をほかのサーバーに伝播します。
以降のセクションでは、デフォルトセットで提供されているマップの更新完了後に実行する手順について説明します。
マップが変更されたあと、Makefile は yppush を使用して、新しいマップをスレーブサーバーに伝播します (Makefile で NOPUSH が設定されていないかぎり)。これは、ypserv デーモンに通知してマップ転送要求を送ることで実行されます。次に、スレーブ上の ypserv デーモンが ypxfr プロセスを起動し、このプロセスがさらにマスターサーバー上の ypxfrd デーモンに接続します。いくつかの基本的なチェック (たとえば、マップが実際に変更されたかどうか) が行われたあと、そのマップが転送されます。そのあと、スレーブ上の ypxfr が yppush プロセスに、転送が成功したかどうかを示す応答を送信します。
注 - 上の手順は、まだスレーブサーバー上に存在しない新しく作成されたマップに対しては機能しません。スレーブサーバー上で ypxfr を実行して、新しいマップをスレーブサーバーに転送する必要があります。
ときには、マップの伝播に失敗し、ypxfr を使用して新しいマップ情報を手動で送信することが必要になる場合があります。ypxfr は、root の crontab ファイルを通して定期的に使用するか、またはコマンド行で対話的に使用するかの 2 つの異なる方法を選択できます。これらの方法については、以降のセクションで説明します。
マップの更新頻度はマップによってそれぞれ異なります。たとえば、デフォルトのマップにある protocols.byname や、デフォルト以外のマップにある auto_master など、一部のマップは何か月も変更されないことがあります。一方で、passwd.byname は 1 日に数回変更される場合があります。crontab コマンドを使用してマップ転送をスケジュールすると、個々のマップごとに特定の伝播回数を設定できます。
マップに適した頻度で ypxfr を定期的に実行するには、各スレーブサーバー上の root の crontab ファイルに適切な ypxfr エントリを含めるようにしてください。ypxfr はマスターサーバーに接続し、マスターサーバー上のコピーがローカルのコピーより新しい場合にのみマップを転送します。
注 - マスターサーバーでデフォルトの -m オプションを指定して rpc.yppasswdd が実行されると、だれかが自分の yp パスワードを変更するたびに passwd デーモンが make を実行し、それによって passwd マップが再構築されます。
NIS 管理者は、各マップに対する crontab エントリを個々に作成するという方法ではなく、root の crontab コマンドでシェルスクリプトを実行してすべてのマップを定期的に更新するという方法を使用することもできます。マップ更新シェルスクリプトのサンプルは、/usr/lib/netsvc/yp ディレクトリに入っています。これらのスクリプト名は、ypxfr_1perday、ypxfr_1perhour、および ypxfr_2perday です。これらのシェルスクリプトは、サイトの要件に合うように変更したり、置き換えたりすることができます。次の例は、デフォルトの ypxfr_1perday シェルスクリプトを示しています。
例 7-1 ypxfr_1perday シェルスクリプト
#! /bin/sh # # ypxfr_1perday.sh - Do daily yp map check/updates PATH=/bin:/usr/bin:/usr/lib/netsvc/yp:$PATH export PATH # set -xv ypxfr group.byname ypxfr group.bygid ypxfr protocols.byname ypxfr protocols.bynumber ypxfr networks.byname ypxfr networks.byaddr ypxfr services.byname ypxfr ypservers
このシェルスクリプトは、root の crontab が毎日実行される場合は 1 日に 1 回マップを更新します。また、1 週間に 1 回、1 か月に 1 回、1 時間に 1 回などの頻度でマップを更新するスクリプトを作成することもできます。ただし、マップを頻繁に伝播するとパフォーマンスが低下する可能性があることに注意してください。詳細は、crontab(1) のマニュアルページを参照してください。
NIS ドメイン用に構成された各スレーブサーバー上で root として同じシェルスクリプトを実行します。各サーバー上の実行時間を変更して、マスターサーバーが動作不能にならないようにしてください。
特定のスレーブサーバーからマップを転送する場合は、シェルスクリプト内で ypxfr の -h machine オプションを使用します。シェルスクリプトに記述するコマンドの構文は、次のとおりです。
# /usr/lib/netsvc/yp/ypxfr -h machine [ -c ] mapname
machine は転送するマップが存在するサーバー名です。mapname は要求されたマップ名です。マシンを指定することなく -h オプションを指定すると、ypxfr はマスターサーバーからマップを取得しようとします。ypxfr 実行時に ypserv がローカルに実行されていない場合は、ypxfr がローカル ypserver に現在のマップ要求の取消しを送信しないよう、-c フラグを使用してください。
-s domain オプションを使用すると、別のドメインからローカルドメインにマップを転送できます。これらのマップは、ドメイン間で同じである必要があります。たとえば、2 つのドメインで同じ services.byname および services.byaddr マップを共有する可能性があります。あるいは、より細かく制御するために、rcp または rsync を使用してドメイン間でファイルを転送することもできます。
ypxfr コマンドの 2 番目の起動方法は、コマンドとしての実行です。一般に、ypxfr をコマンドとして実行するのは例外的状況においてだけです。たとえば、一時的に NIS サーバーを設定して試験環境を作成する場合や、動作不能になっていた NIS サーバーをほかのサーバーと迅速に整合させようとする場合などです。
ypxfr が試みた転送およびその転送結果は、ログファイルに記録されます。/var/yp/ypxfr.log というファイルが存在する場合は、転送結果はこのファイルに記録されます。このログファイルのサイズには制限がありません。このログファイルのサイズが無限に大きくなることを防止するには、ときどき次のように入力してこのログファイルを空にしてください。
# cd /var/yp # cp ypxfr.log ypxfr.log.old # cat /dev/null > /var/yp/ypxfr.log
これらのコマンドは、crontab で 1 週間に 1 回実行させることができます。記録を取らないようにするには、ログファイルを削除してください。
デフォルト以外のマップを更新するには、次の手順を実行する必要があります。
対応するテキストファイルを作成または編集します。
新しいマップまたは更新されたマップを作成 (または再作成) します。マップ作成には 2 つの方法があります。
Makefile を使用する方法。デフォルトでないマップを作成するには、この方法をお勧めします。Makefile にマップのエントリが含まれている場合は、make name を実行します。ここで、name は構築するマップの名前です。Makefile にマップのエントリが含まれていない場合は、「/var/yp/Makefile の変更および使用」の手順に従って、そのエントリの作成を試みます。
/usr/sbin/makedbm プログラムを使用します。このコマンドについては、makedbm(1M) のマニュアルページで詳細に説明されています。
入力ファイルが存在しない場合、makedbm を使用してマップを変更する方法には次の 2 種類があります。
makedbm -u の出力先を一時ファイルに変更し、一時ファイルを更新して更新済みの一時ファイルを makedbm の入力として使用します。
makedbm -u の出力を、makedbm に入力されるパイプライン内で操作します。これは、分解されたマップを awk、sed、または cat のいずれかを追加して更新できる場合に適しています。
テキストファイル /var/yp/mymap.asc がマスターサーバー上のエディタまたはシェルスクリプトで作成されていると仮定します。このファイルから NIS マップを作成し、それを home-domain サブディレクトリ内に配置しようとしています。マスターサーバー上で次のように入力してください。
# cd /var/yp # makedbm mymap.asc home-domain/mymap
mymap マップは現在、マスターサーバー上のディレクトリ home-domain 内に存在します。この新しいマップをスレーブサーバーに転送するには、ypxfr を実行してください。
mymap へのエントリの追加は簡単です。まず、テキストファイル /var/yp/mymap.asc を更新します。対応するテキストファイルを更新しないで実際のdbmファイルを更新した場合は、更新内容が失われます。次に、上記のように makedbm を実行してください。
元のテキストファイルが存在しない場合は、次のように makedbm へ入力することによって、キーボードから NIS マップを作成します (Control-D で終了します)。
ypmaster# cd /var/yp ypmaster# makedbm home-domain/mymap key1 value1 key2 value2 key3 value3
あとでマップを変更する必要がある場合は、makedbm を使用してマップを分解し、一時的な中間テキストファイルを作成することができます。マップを分解して一時ファイルを作成するには、次のように入力します。
% cd /var/yp % makedbm -u homedomain/mymap > mymap.temp
作成される一時ファイル mymap.temp には、1 行に 1 つのエントリが含まれています。このファイルは、任意のテキストエディタで必要に応じて編集できます。
マップを更新するには、次のように入力して、変更された一時ファイルの名前を makedbm に指定します。
% makedbm mymap.temp homedomain/mymap % rm mymap.temp
次に、root になり、次のように入力して、マップをスレーブサーバーに伝播します。
# yppush mymap
前の段落では、makedbm を使用してマップを作成する方法について説明しました。ただし、システムがすでに起動され、実行されたあとにデータベースにデフォルト以外のマップを追加したり、NIS サーバーのセットを変更したりしないかぎり、ypinit コマンドと /var/yp/Makefile を使用することによって、実際に必要なほぼすべてのことを実行できます。
/var/yp 内の Makefile を使用するか、またはほかの何らかの手順を使用するかにかかわらず、その目的は同じです。最終的には、正しく作成された dbm ファイルの新しいペアが、マスターサーバー上の maps ディレクトリ内に存在する必要があります。