「Kerberos インストール・ノート」ドラフト "Kerberos Installation Notes DRAFT" (Bill Bryant, Jennifer Steiner, john Kohl) Project Athena, MIT Initial Release,1989-01-24(plus later pathces through patchlevel 7) 和訳: 桑村 潤(計算力学研究センター技術開発部), 1997-01-31 次の3つのパートからなります。 . MIT で開発され配布の自由なコアの Kerberos システムについてと、 以下のような内容について。 認証サーバ(Authentication Server) Kerberos ライブラリ ndbm データベース・インターフェースライブラリ ユーザプログラム 管理プログラム オンラインマニュアル 認証に Kerberos を使ったアプリケーション 幾つかのユーティリティ . 合州国内でのみ配布可能な Data Encryption Standard(DES) ライ ブラリについて。 . Sun の NFS のための Kerberos の修正(Sun の NFS のソースコー ドに対する "context diffs" として配布している)について。Athena プロジェクトではパッチの取得者を記録することによって、この変 更の配布について Sun の同意を受けることができる。 1. ソースディレクトリの構成 Kerberos の構築とインストールの工程は、Kerberos ソースツリーのファイ ルを別のオブジェクトツリーに入れてそこで、実行モジュールを作成します。 こうすることによって、一つのソースツリーから複数の構築用ツリーを簡単に サポートすることができます。(複数のマシンアーキテクチャをサポートする 際には便利です。)以下、ソースディレクトリとオブジェクトディレクトリを それぞれ、[SOURCE_DIR]と[OBJECT_DIR]で表します。 完全なソースディレクトリの概観は以下のとおりです。 admin Kerberos 管理者のためのユーティリティ appl Kerberos を使ったアプリケーション appl/bsd Kerberos を使ったバークレーの rsh/rlogin 一式 appl/knetd (旧)inetd のような1つの TCP listen ポートの多重化 appl/sample サーバとクライアントのサンプルアプリケーション appl/tftp Kerberos を使った Trivial File Transfer Protocol include インクルードファイル kadmin Kerberos マスターデータベースへのリモート管理インターフェース kuser ユーザプログラム lib Kerberos とそれによるライブラリ lib/acl Access Control List ライブラリ lib/des Data Encryption Standard ライブラリ lib/kadm 管理用インターフェースライブラリ lib/kdb ndbm への Kerberos サーバ・インターフェースライブラリ lib/knet (旧)knetd で使うライブラリ lib/krb Kerberos ライブラリ man オンラインマニュアル prototypes サンプル設定ファイル server 認証サーバ slave Kerberos スレーブデータベース宣伝ソフトウェア tools ソース維持のためのシェルスクリプトなど util ユーティリティ util/imake Imakefile から Makefile を作るツール util/ss (コマンドライン・サブシステムのための)サブシステム・ライブラリ util/et (非依存、一意エラーコードのための)エラーテーブル・ライブラリ util/makedepend Makefile の依存関係生成ツール 1.1 admin ディレクトリ このディレクトリは Kerberos マスターデータベースの管理ツールのための ソースを格納します。 kdb_init Kerberos マスターデータベースを初期化します。Kerberos レルム名 (realmname) と Kerberos マスターパスワードの入力を促します。 kstash マスターパスワードをファイル /.k に貯蔵し "stashes"、そうして マスターサーバマシーンは、不慮のリブートの際に Kerberos サーバ を自動的にリスタートできます。 kdb_edit マスターデータベースを修正するための低レベルツール。 kdb_destroy マスターデータベースを削除します。 kdb_util マスターデータベースをアスキーファイルにダンプするために使えま す。また、アスキーファイルからマスターデータベースに登録するた めにも使えます。 ext_srvtab ホスト依存の srvtab ファイルを作るために、マスターデータベース から情報を抽出します。そのファイルはホストの Kerberos 化した サービスの Kerberos 鍵を格納します。こういったサービスは、 その認証過程で srvtab ファイルからその鍵を捜します。 1.2 kuser ディレクトリ このディレクトリは幾つかのユーザ指向のプログラムのソースコードを格納 します。 kinit ユーザにユーザ名と Kerberos パスワードの入力を促し、そして、 Kerberos 発券許可証(ticket-granting tickets)をあてがいます。 kdestroy 有効な切符を破棄します。ユーザはワークステーションからログオフ する前に kdestroy をするべきです。 klist ユーザに有効な切符を表示します。 ksrvtgt パスワードの代わりにサーバの秘密鍵を使って、 5分間有効な発券 許可証をを取得します。シェルスクリプトとその他のバッチ機能の 中で使うために最初に行ないます。 ksu ユーザ ID を Kerberos を仲介して "root" に置き換えるのに使い ます。 1.3 appl ディレクトリ もし、適切な BSD のライセンスのサイトであれば、Kerberos のリリースは 幾つかの Unix ユーティリティを提供します。Kerberos 認証を使うように修 正されているバークレープログラムは appl/bsd ディレクトリにあります。そ こには、 login, rlogin, rsh および rcp と同時にそれらのデーモン・プロ グラムの kshd と klogind とがあります。login プログラムは発券許可証 (ticket-granting ticket)をログイン時にユーザのために獲得し、その他のユー ティリティーは認証付きの Unix ネットワークサービスを提供します。 この appl ディレクトリにはサンプルの Kerberos アプリケーションのクラ イアントとサーバのプログラムである認証付 tftp プログラムと、knetd 認証 付の inet デーモンもあります。 1.4 server ディレクトリ server ディレクトリには kerberos という Kerberos KDC サーバがありま す。このプログラムは、切符とクライアントが要求する認証サービスの暗号鍵 を配布する、マスターデータベースに対して作られた読み込み専用の要求を管 理します。 1.5 kadmin ディレクトリ kadmin ディレクトリには Kerberos 認証サーバとそれに関係するクライア ントプログラムがあります。このサーバは、ユーザプログラムの kpasswd(ユー ザのパスワードを変更するのに使われます)、Kerberos 管理プログラムの kadmin、そして、srvtab 用ユーティリティプログラム ksrvutil などからの ネットワーク上での要求を受け入れます。管理サーバは、マスターデータベー スへの変更を行なえます。 1.6 include ディレクトリ Kerberos システムを構築するためのインクルードファイルがあります。 1.7 lib ディレクトリ lib ディレクトリには 6 個のサブディレクトリ:acl, des, kadm, kdb, knet, krb があります。des ディレクトリには DES 暗号化ライブラリのソー スがあります(合州国内のみ)。kadm ディレクトリには Kerberos 管理サー バのユーティリティライブラリのソースががあります。kdb ディレクトリには Kerberos データベースルーチンのライブラリのソースがあります。knet ディ レクトリには knetd サーバのクライアントが使うライブラリのソースがあり ます。krb ディレクトリには libkrb.a ライブラリのソースがあります。この ライブラリは Kerberos サーバプログラム、および、認証サービスの要求をす るアプリケーションプログラムとによって使われます。 1.8 man ディレクトリ このディレクトリには Kerberos プログラム群とライブラリルーチン群のた めのオンラインマニュアルがあります。 1.9 prototypes ディレクトリ このディレクトリには /etc/services ファイルと /etc/krb.conf ファイル とがあります。Kerberos サーバと Kerberos 化したアプリケーションのため にのために /etc/services に新しいエントリーを追加しなくてはなりません (services.append には Athena 提供のサービスとアプリケーションで使われ ているエントリーがあります。そして、現在ある /etc/services ファイルに 追加するのにぴったりのものです)。/etc/krb.conf ファイルはローカルな Kerberos レルム(realm)のためにそのホストと与えられたレルムの Kerberos サーバのリストを定義します。/etc/krb.realmes ファイルはマシンの名前と Kerberos レルムのマッピングの例外を定義するファイルです。 1.10 tools ディレクトリ このディレクトリには、その中でソフトウェアを構築するためにディレクト リツリーをセットアップする makefile と我々のスタイルにコードをフォーマッ トするシェルスクリプトがあります。 1.11 util ディレクトリ このディレクトリには幾つかのユーティリティプログラムとライブラリがあ ります。内訳は、Larry Wall の patch プログラム、imake と言う make の前 処理プログラム、そして、Makefile の依存性を生成する makedepend プログ ラム、同様に、サブシステムライブラリとユーティリティ(ss)、および、 エラーテーブルのライブラリとユーティリティ(et)です。 2. インストールの準備 このドキュメントはインストールするマシンと実行モジュールを構築するマ シンとが同じであることを前提としています。ソースと実行モジュールのために 約10メガバイトが必要です。 デフォルトでは、Kerberos データベースファイルを保存するマスターサー バマシンに /kerberos ディレクトリがなくてはなりません。マスターサーバ マシンにそのためのディスクの空きがない場合は別のファイルシステムに /kerberos と言う名前でシンボリックリンクを張って下さい。 3. 構築の準備 システムの構築をする前に、システムの管理する領域を指定するための名前、 レルム名(realm name)を選ばなくてはなりません。プロジェクト Athena はイ ンターネットのドメイン名である ATHENA.MIT.EDU を Kerberos のレルム名に 指定しています。この形式を推奨します。注意:レルム名はケースセンシティ ブです。習慣的にインターネットのドメイン名を大文字で使うことをお勧めし ます。 [SOURCE_DIR]/include/krb.h ファイルを修正してコードの次のラインを捜します: /* * Kerberos 特有の定義 * * KRBLOG は kerberos マスターサーバのログファイルです。 * KRB_CONF はマスターとスレーブのサーバーが走っているのが見つかる異 * なるホストのマシン。 * KRB_MASTER はマスターデータベースを持つマシンの名前。admin_server * はこのマシン上で走り、db を変更するすべてのものが(スレーブに行く * 読み込み専用命令とは反対に)そこに行かなくてはなりません。 * KRB_HOST は kerberos スレーブサーバを捜すためのデフォルトのマシン。 * その他の可能性は KRB_CONF ファイルにあります。 * KRB_REALM はそのレルムの名前。 */ #ifdef notdef this is server - only, does not belong here; #define KRBLOG "/kerberos/kerberos.log" are these used anyplace '?'; #define VX_KRB_HSTFILE "/etc/krbhst" #define PC_KRB_HSTFILE "\\kerberos\\krbhst" #endif #define KRB_CONF "/etc/krb.conf" #define KRB_RLM_TRANS "/etc/krb.realms" #define KRB_MASTER "kerberos" #define KRB_HOST KRB_MASTER #define KRB_REALM "ATHENA.MIT.EDU" 最後の行を次の様に編集します: 1. KRB_REALM 定義を変更して、自分の Kerberos システムの名前を指定し て下さい。これは、各マシン上の設定ファイルで書き換えられるデフォル トですので、設定ファイルが無ければプログラムはこの「埋め込み」レル ム名を使います。 3.1 /etc/krb.conf ファイル 次のフォーマットの/etc/krb.conf ファイルを作ります: realm_name realm_name master_server_name admin server ここで、realm_name にシステムのレルム名を指定し、master_server_name にマスターサーバを走らせるマシンの名前を指定します。'admin server' の 文字列は管理サーバーを走らせるサーバ(データベースにアクセスしなければ ならないマシン)の隣になくてはなりません。 たとえば、レルム名が tim.edu でマスターサーバの名前が kerberos.tim.edu の場合はこのファイルは次の内容となるはずです。 tim.edu tim.edu kerberos.tim.edu /etc/krb.conf ファイルの例が [SOURCE_DIR]/prototypes/etc.krb.conf ファ イルにありますので見て下さい。そのファイルには与えられたレルムのバック アップサーバの準備のし方(同じレルム名の追加行)もあります。 3.2 /etc/krb.realms ファイル 多くの場合、ホストの操作するデフォルトのレルムはインターネットドメイ ン名のドメインの部分で識別されます。 そうでない場合はホスト名あるいはドメイン名からレルム名に翻訳しなけれ ばなりません。これを行なうのが /etc/kerb.realms ファイルです。 翻訳ファイルのそれぞれの行はホスト名あるいはドメイン名とそれに対する レルム名です。 .domain.name kerberos.relm1 host.name kerberos.realm2 例えば、ドメイン LSC.TIM.EDU の中のすべてのホストを KRB.REALM1 にマッ プしながら、ホスト FILMS.LSC.TIM.EDU を KRB.REALM2 にしたければ、ファ イルは次のようになります: .LSC.TIM.EDU KRB.REALM1 FILMES.LSC.TIM.EDU KRB.REALM2 もし、特別なホストがドメインとホスト登録両方に合致したときは、ホスト 登録の方が優先します。 4. このソフトウェアの構築 このソフトウェアを構築する前に [SOURCE_DIR] にある README ファイルを 読んで下さい。以下にその詳細を述べます。 1. 今構築しようとしている Kerberos オブジェクトファイルのツリー のための [OBJ_DIR] ディレクトリ、例えば /mit/kerberos/obj を つくって下さい。 2. [OBJ_DIR] ディレクトリに移ります。次のコマンドで [OBJ_DIR] 下のディレクトリ階層を作り、最終的な構築のための各 Makefile をインストールします。 host% make -f [SOURCE_DIR]/tools/makeconfig SRCDIR=[SOURCE_DIR] 3. util/imake.includes ディレクトリに移ります。config.Imakefile に一通り目を通し、インストールに必要なフラグを立てます。SRCTOP をソースディレクトリの先頭に変更します。 4. ソースツリーの include/osconf.h とそれに関するファイルに使 用するマシンのタイプがあることを確認します。(もしなければ、 自分で作ります。そして、成功すれば kerberos@athena.mit.edu にメールして下さい。 5. [OBJ_DIR] ディレクトリに移動します。次のコマンドは config.Imakefile の中で選択した設定を基に新しい各 Makefile を生成し、そして、それらの Makefile に依存関係の情報を付け足 し、最後にシステムを構築します。 host% make world このコマンドが終るにはしばらく時間を要しますので、出力をファ イルにしてバックグラウンドのジョブにすると良いでしょう。 host% make world >& WORLDLOG_891201 & もし、その後 Kerberos プログラムとライブラリに変更を加えて再 構築が必要であれば、通常は単に次をタイプすれば良いです: host% make all ただし、config.Imakefile の設定を変更をしたり、Imakefile や Makefile 等の修正をした場合は、make world で Makefile や依存 関係のリストを再構築するべきです。 4.1 DES ライブラリのテスト verify コマンドを使い DES ライブラリ組み込みのテストをします: host% [OBJ_DIR]/lib/des/verify verify コマンドが失敗するとエラーの情報が表示され、そのハードウェア への DES の組み込みには調整が必要です。DES ライブラリのテストに失敗す ると、その Kerberos システムは正しく動作しません。 …中略(verify 出力サンプル)… このソフトウェアの構築が終了すると、以下の実行モジュールがオブジェクト ツリーの下に出来ます。 [OBJ_DIR]/admin ext_srvtab, kdb_destroy, kdb_edit, kdb_init, kdb_util, kstash. [OBJ_DIR]/kuser kdestroy, kinit, klist, ksu. [OBJ_DIR]/server kerberos. [OBJ_DIR]/appl/bsd klogind, kshd, login.krb, rcp, rlogin, rsh. [OBJ_DIR]/appl/knetd knetd. [OBJ_DIR]/appl/sample sample_server, sample_client, simple_server, simple_client. [OBJ_DIR]/appl/tftp tcom, tftpd, tftp. [OBJ_DIR]/slave kprop, kpropd. 5. このソフトウェアのインストール このソフトウェアをインストールするには [OBJ_DIR] で make install コ マンドを実行します(プログラムを正しくインストールするためには特権ユー ザでなくてはなりません)。プログラムはデフォルトのディレクトリか、ある いは、以下に述べるように与えられたルートディレクトリの下にインストール されます。 5.1 「標準的」場所 make コマンドを次のように使います: host# make install インストール処理はシステムの様々な部分を 「標準的」ディレクトリにイン ストールしようとします。この処理は必要に応じて「標準的」ディレクトリを 作成します。 標準的なインストール処理は次のようなファイルをコピーします。 ● インクルードファイルの krb.h, des.h, mit-copyright.h, kadm.h, および kadm_err.h が /usr/include ディレクトリにコピーされます。 ● Kerberos ライブラリの libdes.a, libkrb.a, libkdb.a, libkadm.a, libknet.a, および libacl.a が /usr/athena/lib にコピーされます。 ● Kerberos マスターデータベースユーティリティの kdb_init, kdb_destroy, kdb_edit, kdb_util, kstash, および ext_srvtab が /usr/etc (DAEMDIR) ディレクトリにコピーされます。 ● Kerberos ユーザユーティリティの kinit, kdestroy, klist, ksrvtgt, および ksu が /usr/athena (PROGDIR) ディレクトリにコピーされます。 ● 改修された Berkeley ユーティリティの rsh, rlogin が /usr/ucb (UCBDIR)ディレクトリに; rcp が /bin (SLASHBINDIR)ディレクトリに; そして、rlogind, rshd, および login.krb が /usr/etc (DAEMDIR) ディ レクトリにそれぞれコピーされます。ユーザプログラムの古いコピーは rsh.ucb, rlogin.ucb, および rcp.ucb にそれぞれコピーされます。も し、何らかの理由で Kerberos 版が成功しなければ、これらのプログラ ムは Kerberos 版をやめて基のバージョンを実行します。 ● tftp と tcom の Kerberos 版が /usr/athena (PROGDIR) ディレクトリ に; tftpd が /etc (ETCDIR) にコピーされます。tftp と tftpd は特権 のないユーザ(DEF_UID のユーザid)に set-uid されてインストールさ れます。 ● knetd デーモンは /usr/etc (DAEMDIR) ディレクトリにコピーされます。 ● Kerberos サーバの kerberos、スレーブ普及ソフトウェアの kprop と kpropd、および管理サーバの kadmind は /usr/etc (SVRDIR, SVRDIR, および DAEMDIR) ディレクトリにコピーされます。 ● リモート管理ツールの kpasswd, ksrvutil, および kadmin は /usr/athena (PROGDIR) ディレクトリにコピーされます。 ● Kerberos オンラインマニュアルは /usr/man ディレクトリの適切な場 所にインストールされます。オンラインマニュアルのインストールの後 に makewhatis を走らせるのを忘れないで下さい。 5.2 「非標準」インストール もし、このソフトウェアを別の場所にインストールしたければ、インストー ルプログラムのルートとなる最終的な行き先の [DEST_DIR] を指定して、次 のように make コマンドを実行します。すなわち、通常は /usr/athena に インストールされるプログラムが [DEST_DIR]/usr/athena にインストール されるわけです。 host# make install DESTDIR=[DEST_DIR] 6. 結び これで Kerberos システムの構築とインストールはおしまいです。 Kerberos マスターデータベースを作り、認証サービスをインストールし、 Kerberosサーバを開始するには、Kerberos Operation Notes を参考にして 下さい。 7. 謝辞 このドキュメントのデバグを助けてくれた Henry Mensch と Jon Rochlis に感謝します。 目次 1. ソースディレクトリの構成 1.1 admin ディレクトリ 1.2 kuser ディレクトリ 1.3 appl ディレクトリ 1.4 server ディレクトリ 1.5 kadmin ディレクトリ 1.6 include ディレクトリ 1.7 lib ディレクトリ 1.8 man ディレクトリ 1.9 prototypes ディレクトリ 1.10 tools ディレクトリ 1.11 util ディレクトリ 2. インストールの準備 3. 構築の準備 3.1 /etc/krb.conf ファイル 3.2 /etc/krb.realms ファイル 4. このソフトウェアの構築 4.1 DES ライブラリのテスト 5. このソフトウェアのインストール 5.1 「標準的」場所 5.2 「非標準」インストール 6. 結び 7. 謝辞