この節には、ディレクトリへの問合せに使える Netscape のアドレス帳 (Address Book)についての情報があります。また、バージョン 4.5 以上の Netscape Navigator と LDAP サーバを使ってローミングアクセスを実現する 方法について詳しく説明します。OpenLDAP のメーリングリストでは、 ローミングアクセスについて多くの議論がありました。それはこの機能が うまく実現できないためです。大部分の人々は Netscape Navigator が ダウンロードとアップロードするのに LDAP サーバを使うのを好みません。 したがって、これを読んでローミングアクセスが思うように動作しないという ことがわかっても気にしないでください。多くの人々が既にこの状況を経験 しているのです。ここでこの機能を紹介する目的は、LDAP プロトコルの 可能性についてのアイデアを人々により多く与えるためです。最後には、 slapd プロセスを安全に中断する方法や slapd のログについての情報が あります。
[訳注] この節の説明は基本的に OpenLDAP 1.2.x に基づいています。 OpenLDAP 2.0.x では属性やオブジェクトクラスの拡張方法などが変更になっています。
ローミングアクセスの目的は、ネット上のどこにいても Netscape Navigator と LDAP サーバを用いて、ブックマーク、設定、メールフィルタなどを取り出せる ようにすることです。これは非常に便利な機能です。あなたがどこで Web に アクセスしようとも、そこで使うブラウザにはあなた自身の設定があるのです。 もしあなたが旅行に出た先で、あなたのローカルブックマークに登録してある 相場のサイトにアクセスしたい場合も心配ありません。ブックマークや設定 ファイルは LDAP サーバにアップロードされ、後であなたがどこにいようとも ブックマークや設定ファイルをすべて取り出せます。
[訳注] 残念ながら Netscape 6 ではローミングアクセス機能が無くなりました。
ローミングアクセスを実現するには次のステップに従う必要があります。
slapd.at.conf (これは slapd.conf に取り込まれるファイルで、 通常 /usr/local/etc/openldap にあります)に与えられている属性の一覧に 次の新しい属性を追加する必要があります。
attribute nsLIPtrURL ces
attribute nsLIPrefs ces
attribute nsLIProfileName cis
attribute nsLIData bin
attribute nsLIElementType cis
attribute nsLIServerType cis
attribute nsLIVersion cis
attribute nsServerPort cis
[訳注] OpenLDAP 2.0.x の場合、/usr/local/etc/openldap/schema/ に適当な ファイルを用意して次の定義を追加し、それを slapd.conf に取り込む ようにします。
attributetype ( 2.16.840.1.113730.3.1.70
NAME 'serverRoot'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 2.16.840.1.113730.3.1.76
NAME 'serverHostName'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 2.16.840.1.113730.3.1.280
NAME 'nsServerPort'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 2.16.840.1.113730.3.1.399
NAME 'nsLIPtrURL'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 2.16.840.1.113730.3.1.400
NAME 'nsLIPrefs'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 2.16.840.1.113730.3.1.401
NAME 'nsLIProfileName'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 2.16.840.1.113730.3.1.402
NAME 'nsLIData'
EQUALITY bitStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
attributetype ( 2.16.840.1.113730.3.1.403
NAME 'nsLIElementType'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 2.16.840.1.113730.3.1.404
NAME 'nsLIServerType'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 2.16.840.1.113730.3.1.405
NAME 'nsLIVersion'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
slapd.oc.conf (これは slapd.conf に取り込まれるファイルで、 普通 /usr/local/etc/openldap にあります)に 次の新しいクラスを追加する必要があります。
objectclass nsLIPtr
requires
objectclass
allows
nsliptrurl,
owner
objectclass nsLIProfile
requires
objectclass,
nsliprofilename
allows
nsliprefs,
uid,
owner
objectclass nsLIProfileElement
requires
objectclass,
nslielementtype
allows
owner,
nslidata,
nsliversion
objectclass nsLIServer
requires
objectclass,
serverhostname
allows
description,
cn,
nsserverport,
nsliservertype,
serverroot
[訳注] OpenLDAP 2.0.x の場合、/usr/local/etc/openldap/schema/ に適当な ファイルを用意して次の定義を追加し、それを slapd.conf に取り込む ようにします。
objectclass ( 2.16.840.1.113730.3.2.74
NAME 'nsLIPtr'
SUP top
MUST objectClass
MAY ( nsLIPtrURL $ owner ) )
objectclass ( 2.16.840.1.113730.3.2.75
NAME 'nsLIProfile'
SUP top
MUST ( objectClass $ nsLIProfileName )
MAY ( nsLIPrefs $ uid $ owner ) )
objectclass ( 2.16.840.1.113730.3.2.76
NAME 'nsLIProfileElement'
SUP top
MUST ( objectClass $ nsLIElementType )
MAY ( owner $ nsLIData $ nsLIVersion ) )
objectclass ( 2.16.840.1.113730.3.2.77
NAME 'nsLIServer'
SUP top
MUST ( objectClass $ serverHostName )
MAY ( cn $ description $ nsLIServerType $
nsServerPort $ serverRoot ) )
[訳注] このステップに入る前に slapd.conf の設定をしておきましょう。 まず OpenLDAP 1.2.x の場合 `lastmod on' にして運用属性 modifyTimestamp が自動的に管理されるようにしなければなりません。 さらに、次のアクセス権を設定して slapd を再起動してください。
OpenLDAP 1.2.x の場合: access to dn=".*,ou=Roaming,o=myOrg,c=NL" by dnattr=owner write access to attr=userpassword by * none by self write OpenLDAP 2.0.x の場合: access to dn=".*,ou=Roaming,o=myOrg,c=NL" by dnattr=owner write access to attr=userpassword by self write by anonymous auth by dn="cn=Manager,o=myOrg,c=NL" write by * none access to * by self write by anonymous auth
次に LDIF ファイルを作成する必要があります。Netscape のローミンング アクセス機能を使ってみたい各ユーザ用に、プロファイルエントリを追加 します。以下に、プロファイルエントリを持つ LDIF ファイルの簡単な例を 示します。
dn: o=myOrg,c=NL
objectClass: top
objectClass: organization
o: myOrg
dn: ou=People,o=myOrg,c=NL
objectClass: top
objectClass: organizationalUnit
ou: People
dn: cn=seallers,ou=People,o=myOrg,c=NL
userPassword: myPassword
objectClass: top
objectClass: person
cn: seallers
sn: seallers
dn: ou=Roaming,o=myOrg,c=NL
objectClass: top
objectClass: organizationalUnit
ou: Roaming
dn: nsLIProfileName=seallers,ou=Roaming,o=myOrg,c=NL
objectClass: top
objectClass: nsLIProfile
nsLIProfileName: seallers
owner: cn=seallers,ou=People,o=myOrg,c=NL
[訳注] もちろん、LDIF ファイルを作成するだけではなくて、これを実際に ldapadd などを使ってディレクトリに格納してください。
次のステップは、LDAP サーバに対してローミングアクセスが可能となるように Netscape Navigator を設定することです。
まず、このプロファイルでローミングアクセスを可能にしなければなりません。 当該のチェックボックスをクリックします。
「設定」ウィンドウの左側にある「ローミング ユーザ」オプションの矢印を プルダウンして、ローミングアクセスのサブオプションを表示します。
Address: ldap://myHost/nsLIProfileName=$USERID,ou=Roaming,o=myOrg,c=NL
User DN: cn=$USERID,ou=People,o=myOrg,c=NL
重要:Netscape は、ブラウザを実行する前に、あなたが選択した プロファイルの名前で $USERID を自動的に置き換えます。したがって、 あなたがプロファイル seallers を選択していれば $USERID は seallers に置き換わり、プロファイル gonzales を選択していれば $USERID は gonzales に置き換わります。プロファイルについてよく知らなければ、 Netscape Comunicator パッケージについてくる Profile Manager アプリケーションを起動してください。これは、同じマシン上で複数 ユーザが安全にブラウザを扱えるよう設計されたアプリケーションであり、 個々のユーザが自分だけのブラウザ設定を保有できます。
[訳注] 訳者が確認したところでは、$USERID は ローミング ユーザの設定で入力した ユーザ名で置き換わるようです。
最終ステップは、サーバの再起動です。LDAP サーバを安全に終了させる 方法については LDAP サーバを終了する方法、 再び起動する方法については LDAP サーバの実行を 参照してください。
[訳注] 訳者が確認したところでは、ここで再起動する必要があるのは LDAP サーバ ではなくて Netscape です。
LDAP サーバが実行していれば、いろいろなクライアント(たとえば ldapsearch コマンドラインユーティリティ)で LDAP サーバにアクセスできます。非常に 興味深いクライアントに Netscape のアドレス帳があります。これは Netscape のバージョン 4.x から利用できるようになっていますが、LDAP サーバと安全に やりとりするためには 4.5 以上のものを使う必要があります。
[訳注] 残念ながら Netscape 6 では LDAP サーバへのアクセス機能が無くなりました。
アドレス帳を使えるようにするには次のようにしてください。
Netscape Navigator の起動 -> Communicator メニューの選択 -> アドレス帳(Address Book)
Netscape のアドレス帳には、デフォルトの LDAP ディレクトリが既にいくつか 登録されています。あなたの LDAP ディレクトリも登録する必要があります!
ファイル(File)メニューの選択 -> 新しいディレクトリ(New Directory)
あなたのサーバの情報を入力します。たとえば次のように設定します。
デフォルトの LDAP ポートは 389 であり、サーバ側でこのオプションを 変更しているのでない限りポートを変更しないでください。
これで、ボックス Show Names Containing を使ってあなたのサーバに簡単な 問合せができますし、Search ボタンで複雑な問合せもできるようになっています。
LDAP Migration Tools は、設定ファイル(configuration files)を LDIF フォーマットに変換する Perl スクリプト集です。このスクリプト集は PADL Software Ltd によって提供されていて、利用する前にライセンス条項 に目をとおしておくことを勧めますが、とにかくフリーです。ユーザの認証に LDAP サーバを利用しようとしているなら、このツールは非常に有用です。 Migration Tools は、NIS やパスワードのアーカイブを LDIF に変換し、 それらのファイルと互換のある情報を LDAP サーバで使えるようにします。 また、ユーザ、グループ、hosts, aliases, netgroups, networks, protocols, RPC そして既存のネームサービス(NIS、フラットファイル、NetInfo)の サービスを LDIF フォーマットに移行するのにも、この Perl スクリプト集を 適用してください。LDAP Migration Tools のダウンロードとさらなる情報を 入手するには、次のアドレスに行ってください。
http://www.padl.com/tools.html
このパッケージには README ファイルが付いていて、スクリプトファイルの 名前は機能を表しています。まずは README ファイルに目をとおして、 その後にスクリプトの適用を開始してください。
PAM (Pluggable Authentication Modules)という機構を用いて、LDAP は ユーザを認証できます。UNIX が登場した当時からユーザの認証は、 ユーザがパスワードを入力し、その入力されたパスワードが /etc/passwd に 格納されている暗号化された正式なパスワードに該当するかをシステムが 検査することにより行われてきました。
これは初期のことであり、その後、多くのユーザの認証が一般的になりました。 その中には /etc/passwd をより複雑にしたものや、スマートカードという ハードウェアデバイスもありました。このような認証の問題は、新しい認証方式 が開発されるたびに、その新しい認証方法をサポートするために認証が必要な プログラム(login, ftpd など)のすべてを書き換えなければならないことです。 PAM は、認証方式から独立してプログラムを開発する手段を提供します。この ようなプログラムは、実行時に認証を行うために接続する「認証モジュール」 を必要とします。
LDAP のための認証モジュールは次のアドレスから tar ball の形式で 入手できます。
http://www.padl.com/pam_ldap.html
ここでは、既に Linux ディストリビューションに PAM が用意されているもの
とします。もし PAM が用意されていなければ
http://www.kernel.org/pub/linux/libs/pam を参照してください。
実際のところ、さまざまな Linux ディストリビューションでの PAM の
標準設定はそれぞれ違っています。普通、PAM の設定ファイルは
/etc/pam.d/
ディレクトリに存在します。このディレクトリには、
マシンで実行する各サービスごとに一つのファイルがあります。
たとえば、Linux のブートアップの後でユーザのログイン処理に LDAP サーバを
使いたいなら、(この段落の最初に説明してあるように)あなたの Linux で
PAM を使えるようにし、LDAP PAM モジュールをインストールし、/etc/pam.d/
ディレクトリにある login という PAM 設定ファイルを編集して次のような
内容にします。
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_ldap.so
auth required /lib/security/pam_unix_auth.so try_first_pass
account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_unix_acct.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_ldap.so
password required /lib/security/pam_pwdb.so use_first_pass
session required /lib/security/pam_unix_session.so
[訳注] pam_ldap は認証を行うだけなので、uid, gid, ホームディレクトリなどの 読出しも LDAP でできるように NSS (Name Service Switch)のモジュール nss_ldap をインストールしておく必要があるでしょう。nss_ldap も PADL Software の Web サイトから入手できます。また、ディレクトリ内のエントリ の作成には、前述の LDAP Migration Tools を使うとよいでしょう。
Kldap は KDE のために書かれたグラフィカルな LDAP
クライアントです。Kldap はよいインタフェースを持ち、ディレクトリに
格納された情報ツリーをすべて参照できます。次の Web サイトで、この
アプリケーションのスクリーンショットのチェックとダウンロードができます。
http://www.mountpoint.ch/oliver/kldap
GQ という簡潔なインタフェースを備えたグラフィカル LDAP クライアントもあります。
これは GNOME のために書かれたものです。GQ は KDE でも動作しますし、
Kldap も GNOME で動かせます。次の Web サイトで、ダウンロードやさらなる
情報を取得できます。
http://biot.com/gq/
slapd はログを生成するのに syslog(8) 機能を用います。syslog(8) 機能の デフォルトユーザは LOCAL4 ですが、LOCAL0, LOCAL1 から LOCAL7 までの どれかにすることもできます。
ログを生成をできるようにするには、たいていは /etc ディレクトリにある syslog.conf ファイルを編集しなければなりません。
次のような行を追加します。
local4.* /usr/adm/ldalog
この設定では syslog 機能にデフォルトユーザ LOCAL4 を使います。この行の 構文を知らなければ、syslog, syslog.conf, syslogd の man ページを見て ください。デフォルトユーザを変更したり、生成するログのレベルを指定する には、slapd を起動するときに次のオプションを指定します。
-s syslog-level
このオプションは、syslog(8) 機能にどのレベルのデバッグ情報を出力するかを
slapd に伝えます。このレベルはメッセージの重大度を述べていて、次に(高い
ほうから低いほうに)あげるキーワードのいずれかである:emerg, alert, crit,
err, warning, notice, info, debug. たとえば次のように指定します。
slapd -f myslapd.conf -s debug
[訳注]
この説明は何かの勘違いのようです。
実際にはどのデバッグ情報を出力するかを数値で指定します。
指定する数値については slapd.conf の loglevel オプションを
参照してください。
-l syslog-local-user
syslog(8) 機能のローカルユーザを指定します。値には LOCAL0, LOCAL1 など
LOCAL7 まで指定できます。デフォルトは LOCAL4 です。しかし、このオプション
は syslog(8) 機能でローカルユーザをサポートするシステムでのみ許されます。
さて、生成されたログを見てみてください。このログは、問合せ、更新、バインドなどで起きる問題を解決するのに 大きな助けとなります。