2. pam_ldap と nss_ldap を使った LDAP 認証

この章は LDAP を NIS の代用品としてユーザカウントの管理に 使う方法に焦点を合わせます。たくさんのユーザアカウントを幾つかの ホストに分散して持っていると、アカウント設定に不整合が生じることが よくあります。LDAP を使えば、集中認証システムを構築することによって データの重複を避けたり一貫性を増したりすることができます。

現時点では、ユーザのアカウントデータや他の情報を ネットワーク経由で供給するために最もよく使われている方式は Network Information Service (NIS) です。LDAP と同様に、NIS も 中央サーバに passwd, shadow, groups, services, hosts 等々の 設定ファイルを保管して置けるようにするサービスです。 NIS サーバは NIS クライアントから問い合わせを受けて、 こうした情報を提供します。

LDAP は NIS と同じ機能を提供でき、 さらに幾つか、LDAP の方が優れている点があります。以下のとおりです。

ここで、Pluggable Authentication Module (PAM) と Name Service Switch (NSS) テクノロジを備えたシステム上で LDAP サーバがどのように認証と認可のために使えるか に焦点を合わせることにします。特に Linux オペレーティング システムに言及するつもりですが、その説明が他のオペレーティング システムに適用できないというわけではありません。

ここで取り上げる環境では1台の LDAP サーバがあり、ここに ユーザアカウントデータが扱いやすい形式で格納されます。Un*x クライアント は、この情報を使って標準の Un*x の流儀での認証とリソースに対する 認可を行います。

クライアント/サーバ通信には、セキュアな経路も要求されます。 というのも、ユーザアカウントのデータのように クリティカルな情報は、 ネットワーク上に内容が明白なまま送信すべきではないからです。 このセキュアな経路は Secure Socket Layer によって備えられます。

クライアント側ではキャッシュ機構を性能上の問題から 必要としますが、これは Name Service Caching Daemon によって 備えることができます。

このシステムを構築するのに使うソフトウェアの (ほぼ) すべてがオープンソースです。

2.1. 構成要素

この節では、認証システムを構築するために使われる種々の構成要素を 概説します。各要素を簡単に説明していきます。

2.1.1. 認証 ― PAM と pam_ldap.so

Pluggable Authentication Module は、標準 UNIX, RSA, DCE, LDAP といった種々の認証技術と login, passwd, rlogin, su, ftp, ssh 等々のシステムサービスとの統合を可能にし、しかもこれらのサービス を変更する必要がありません。

最初は Sun Solaris に実装されたのですが、今や PAM は RedHat や Debian を含む多くの Linux ディストリビューションで、 認証の枠組みの標準的なものとなっています。 これによって供給される API を通して、認証の要求がテクノロジ特有の動作 (これは PAM モジュールと呼ばれるライブラリによって実装されています) に 割り当てられます。 この割り当ては PAM 設定ファイルで行なわれます。基本的にこのファイルの中で、 各サービスに用いる認証機構が与えられることになります。

今回の場合は、pam_ldap.so 共有ライブラリで実装される pam_ldap モジュールによって、ユーザとグループの認証に LDAP サービスを 使えるようにします。

認証設備を必要とするサービスはそれぞれ、 PAM 設定ファイルを通して、異なる認証方式を使うように 設定できます。これはつまり、PAM 設定ファイルを使って、 ユーザがリソースへのアクセスを得るために満たさなくてはならない 要求事項の一覧表を書くことができるという意味です。

2.1.2. Name Service Switch と nss_ldap.so

いったんユーザが認証されてからも、多くのアプリケーションは ユーザ情報へのアクセスを必要とします。この情報は伝統的には テキストファイル (/etc/passwd, /etc/shadow, /etc/group) に入れられていますが、他のネームサービスによって供給することもできます。

新しいネームサービス (たとえば LDAP) が導入されるにつれ、 このような情報取得の実装は、 (NIS や DNS のように) C ライブラリ内、または その新しいネームサービスを使いたいアプリケーション内の、 どちらでも可能となってしまいました。

いずれにしても、こういったことは、共通の汎用的なネームサービス API を使って、各テクノロジに基づく動作でサービスから情報を得る ライブラリ群にそれを要求することにすれば避けられます。

GNU C Library は Name Service Switch を実装して 上記を解決しました。 これは Sun C library に起源を持ち、 共通の API を通して種々のネームサービスから情報を得られるように する方法です。

NSS は共通の API と設定ファイル (/etc/nsswitch.conf) を使用します。 この設定ファイル内で、サポートするデータベース毎に、 そのサービスを提供するライブラリを指定します。

現在 NSS によってサポートされている [2] データベースは ―

  • aliases ― メールエイリアス。

  • ethers ― イーサネットの番号のデータ。

  • group ― ユーザのグループ。

  • hosts ― ホストの名前と番号のデータ。

  • netgroup ― ネットワーク全体のホストとユーザの一覧。

  • network ― ネットワークに関する名前と番号のデータ。

  • protocols ― ネットワークのプロトコル。

  • passwd ― ユーザのパスワード。

  • rpc ― Remote Procedure Call に関する名前と番号のデータ。

  • services ― ネットワークサービス。

  • shadow ― ユーザのシャドウパスワード。

nss_ldap 共有ライブラリを使えば、LDAP を用いて上記の割り当てを 実装することができます。ほんとうは上記すべての割り当てが実装できるのです けれども、ここでは shadow, passwd, group データベースの LDAP 実装 にのみ焦点を合わせることにします。

2.1.3. Lightweight Directory Access Protocol

今回のアプリケーションでは、ユーザアカウントと ユーザグループに関する情報をクライアントに供給するために LDAP が使用されます。 ユーザとグループを表わすのに用いられる標準的な objectclass は top, posixAccount, shadowAccount, posixGroup です。

データベース上のユーザ関連のエントリは少なくとも [3] top, posixAccount, shadowAccount の objectclass に属していなくてはなりません。グループエントリは top と posixGroup の objectclass に属していなくてはなりません。

今回利用する pam_ldap と nss_ldap の実装がこの objectclass を参照するからです。この objectclass は RFC 2307 に記述されているものです。

Note: 実際には、LDAP 版 NSS はここで例示しなかった objectclass も認識します。

2.1.4. Name Service Caching Daemon

Name Service Caching Daemon (NSCD) はネームサービスによる 名前解決の結果をキャッシュするために使われ、 NSS によって提供されるサービスの性能を向上できます。

クライアント側が許容できる性能を得るために、 passwd エントリのために大きなキャッシュを設定しなくてはなりません。

2.1.5. Secure Socket Layer

詳細については Section 10 を参照してください。

LDAP サーバとクライアントライブラリ (pam_ldap.so や nss_ldap.so) 間の通信には SSL が必要です。重要なデータ、 たとえばパスワードエントリなどは、クライアントとサーバとの間で 暗号化されている必要があるからです。SSL はまた、クライアントがサーバを 特定することを可能にしますから、これによって、不確かな情報源から 認証情報を得るということを避けられます。

クライアント認証 (サーバがクライアントを識別する機能) は現在の pam_ldap および nss_ldap モジュールの実装では サポートされていません。きっと有用なのでしょうけれども。

2.2. 認証システムの構築

この章では、前章に記されている構成要素を用いた認証システムを 構築するために必要な手順を説明します。

Figure 1. PAM の配置図

PAM の視点から見た、認証システム各部の間の関係

Figure 2. NSS の配置図

NSS の観点からの、認証システムの各部間の関係

この配置図は、自分で実装するにはとても複雑に 見えるかもしれません。けれどもほとんどの要素はすでに Linux のシステム内に入ってしまっています。

2.2.1. サーバ側

サーバ側においては、LDAP サーバがインストールされ、かつ 設定されていなくてはなりません。ここで使う LDAP サーバは OpenLDAP という オープンソースの LDAP ツールキットで、LDAP サーバ (slapd) と ライブラリとユーティリティを含んでいます。

現時点の OpenLDAP には LDAP の実装がふたつあります。 V2 の実装 (OpenLDAP 1.2.x) と V3 の実装 (OpenLDAP 2.0.x) です。

V3 の実装は本体で SSL 機能を提供しますが、V2 は提供しません。 とはいえ、V2 のサーバにも SSL ラッパを使えるので SSL 機能を追加できます (Section 10 を参照)。

2.2.1.1. OpenLDAP のインストールと設定

LDAP のインストールと設定の手順は、 LDAP-HOWTO を参考にできます。

slapd が適切に設定されたら、 データベースの初期生成のためにデータを入れる必要があります。 そこで、LDIF (LDAP Data Interchange Format) ファイルを 作らなくてはなりません。これはテキストファイルで、 以下のコマンドによって LDAP データベースにインポートされます。

#ldif2ldbm -i your_file.ldif 

Note: ldif2ldbm は OpenLDAP 1.2.x パッケージで 提供されるので、OpenLDAP 2.0.x を使うのであれば ldapadd コマンドを (サーバ起動後に) 使うべきです (訳注:2.0.x で ldif2ldbm に相当するのは slapadd だという指摘を 稲地様からいただきました。サーバ停止中に slapadd -l your_file.ldifとする方が速くて簡単らしいです)。

OpenLDAP 2.0.x (LDAPv3) を使うのであれば、標準的な NIS スキーマが /etc/openldap/schema/nis.schema というファイルに 入っていますから、それを自分の slapd.conf で include ディレクティブによってスキーマを有効にしてください。

以下に LDIF ファイルの最も簡単な例を挙げます。 各エントリは空行で分けられています。

dn:dc=yourorg, dc=com
objectclass: top
objectclass: organizationalUnit

dn:ou=groups, dc=yourorg, dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups

dn:ou=people, dc=yourorg, dc=com
objectclass: top
objectclass: organizationalUnit
ou: people

dn: cn=Giuseppe LoBiondo, ou=people, dc=yourorg, dc=com
cn: Giuseppe Lo Biondo
sn: Lo Biondo
objectclass: top
objectclass: person
objectclass: posixAccount
objectclass: shadowAccount
uid:giuseppe
userpassword:{crypt}$1$ss2ii(0$gbs*do&@=)eksd
uidnumber:104
gidnumber:100
gecos:Giuseppe Lo Biondo
loginShell:/bin/zsh
homeDirectory: /home/giuseppe
shadowLastChange:10877
shadowMin: 0
shadowMax: 999999
shadowWarning: 7
shadowInactive: -1
shadowExpire: -1
shadowFlag: 0

dn: cn=mygroup, ou=groups, dc=yourorg, dc=com
objectclass: top
objectclass: posixGroup
cn: mygroup
gidnumber: 100
memberuid: giuseppe
memberuid: anotheruser

Note: 長過ぎる行は次の行をタブかスペース (いずれかをひとつだけ) で始めて 続けられることを覚えておいてください。これは他の LDIF 書式のファイル にも当てはまります。

ここでは下部組織を二つ持つ組織として、DN を定義しました。 dc=yourorg, dc=com という組織として定義しましたが、その下に、ふたつの組織サブユニット ― people と groups ― が含まれています。そしてユーザは、people 組織ユニット と、groups 組織ユニット下のグループ (のうち、ユーザが所属しているもの。 訳注:giuseppe の場合は mygroup) とに所属するよう記述されています。

Note: 既存のデータベースを LDIF 書式に変換する 便利なツールが PADL によって提供されています。これはftp://ftp.padl.com/pub/MigrationTools.tar.gz というアドレスにあります。

LDIF ファイルは、サーバが動作していないときに インポートしなくてはなりません。ldif2ldbm コマンドは LDAP サーバを通さずに直接データベースを構築するからです。 LDIF ファイルをデータベースにインポートすれば、 サーバを起動できます。

2.2.2. クライアント側

クライアント側には pam_ldap.so と nss_ldap.so が必須で、それらは Netscape LDAP Library (Mozilla) を使ってコンパイルされていなくてはなりません。 そのライブラリが供給する LDAPS (LDAP over SSL) の API が要求されるからです。そのライブラリはバイナリパッケージで Netscape One License のもとに配布されており、オープンソース ではありません (とはいえパブリックドメインではあります)。

そのパッケージを、たとえば /usr/local/ldapsdk というディレクトリ内に展開してください。

さらに、クライアントライブラリは証明データベースにアクセスでき なくてはなりません。このデータベースには LDAP (stunnel) サーバ証明書と、 そのサーバ証明書に (「信用済み <trusted>」として) 署名した CA の CA 証明書とが含まれていなければなりません。

証明データベースは Netscape の書式のものでなければなりません。 pam_ldap と nss_ldap をコンパイルするために使われている Mozilla LDAP API が Netscape の書式の証明データベースを使うからです。

そのような証明データベースを扱うには、Netscape が提供している PKCS#11 パッケージ内にある certutil というユーティリティを使うのが便利です [4]

LDAP クライアントの主要な設定ファイルは /etc/ldap.conf です。

もし nss_ldap を使うのであれば、厳密には pam_ldap の使用は必要ないのだ ということを覚えておいてください。

そのかわりに pam_unix_auth モジュールを使えます。 なぜなら nss_ldap はあらゆる getpw* および getsh* コールを LDAP 参照に割当て、 pam_unix_auth はユーザ認証にこのコールを利用するからです。 (訳注:ここについて、著者の Roel van Meer 様からの注意をいただきました。 彼はその中で、PAM が認証にのみ使われることと、 PAM が NSS ライブラリではなくPAM ライブラリから情報を得ることを指摘し、 「認証」には pam_ldap モジュールが必要だ、とおっしゃっていました。 修正されるはずなので、正確な情報は原文の最新版にあたってください。)

2.2.2.1. PAM LDAP のインストールと設定

pam_ldap をコンパイルしてインストールするには、 以下のようにしてください。

$ ./configure --with-ldap-lib=netscape4 --with-ldap-dir=/usr/local/ldapsdk
$ make
# make install

configure の --with-ldap-lib オプションは、 どの LDAP ライブラリを使おうとしているかを指定します。

--with-ldap-dir オプションは、どこに Netscape ldapsdk ツールキットをインストールしてあるのかを指定します。

これによって /lib/security/pam_ldap.so.1 と各種シンボリックリンクがインストールされます。

PAM が新しい認証システムにアクセスできるように、 適切に設定されなくてはいけません。PAM 設定ファイルは /etc/pam.d というディレクトリに配置され、 認証が供給されるサービス名にしたがって名付けられています。

たとえば以下は login サービスのための PAM 設定ファイル (login という名前のファイル) です。

 
#%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 use_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 sufficient /lib/security/pam_ldap.so
password required   /lib/security/pam_unix_passwd.so use_first_pass md5 shadow
session  required   /lib/security/pam_unix_session.so

PAM で使う標準的な PAM 設定ファイルは pam_ldap のソースの pam_ldap-(バージョン)/pam.d というディレクトリ の中にあります。

この標準的なファイルは /etc/pam.d ディレクトリの中に コピーできます。もし何かおかしなことをしてしまうと、おそらく再びログイン できなくなってしまうので、この操作をする時は注意深く行ってください。 新しいファイルをインストールする前に /etc/pam.d のバックアップをとっておき、 それを復帰させる権限のあるシェルを開いたままにしておくことをお勧めします。

Note: そのサンプルの pam.d ディレクトリには sshd というファイルがありません。そのため、 それを作成しなければ、pam を使う ssh を介してログイン できません (OpenSSH は PAM を使用します)。

2.2.2.2. NSS LDAP のインストールと設定

ソースを展開してから、Makefile を確認してください。ほとんどの設定内容に対しては編集の必要はありません。 とはいえ、SSL を使いたいのであれば SSL 対応の LDAP ライブラリ ― たとえば Netscape のもの ― をリンクしなくてはなりません。

LDAP の SDK が /usr/local/ldapsdk 内にあるとすれば、SSL を有効にするには、Makefile を修正しなければなりません。 その修正内容は、Makefile.linux.mozilla 内で NSFLAGS を探して、コメントになっている -DSSL を有効にすることです。

さらに LIBS の定義を見て、そのファイル内で指定されている ldapssl ライブラリが、自分のインストールしてあるものと同じかどうか を確認してください (ldap_nss.so は libldapssl40 と libldapssl30 の両方にリンクしてコンパイルされます)。

その後、ライブラリをインストールできます ―

$ make -f Makefile.linux.mozilla
# make -f Makefile.linux.mozilla install	
#ldconfig	 

これによって /lib/libnss_ldap.so がインストールされます。これが nss_ldap ライブラリです。 そして /etc/nsswitch.ldap/etc/ldap.conf とがまだ存在してない場合には、サンプルの設定ファイルとしてインストールされます。

インストールしたら、その NSS 設定ファイル /etc/nsswitch.conf を編集しなくてはなりません。 LDAP はあらゆるサービスに用いることができるのですが、今回は passwd, group, shadow にのみ使用します。この場合、設定ファイルの冒頭に 以下のようなことを書いておくべきです。

 	
passwd: files ldap
group:  files ldap
shadow: files ldap

この設定だとエントリは、まずシステムファイル内で探されて、 値が返ってこなかったなら LDAP サーバに問い合わせられます。

Note: LDAP を DNS 問い合わせのバックエンド として使うときには注意してください。DNS がそのサーバのホスト名を 解決できないと、無限ループに入ってしまうのです。 なぜなら libldap 自体が gethostbyname() をコールするからです。 (nsswitch.ldap 内の記述より)

2.2.2.3. NSCD の設定

NSCD は多くの Linux ディストリビューションには 最初から入っています。入っていなくても GNU C ライブラリの パッケージ内にあります。

NSCD の設定ファイルは /etc/nscd.conf です。各行は属性と値、または属性とキャッシュ名と値のいずれかを指定します。 それぞれのフィールドはスペースかタブで区切られます。キャッシュ名は hosts, passwd, groups のいずれかにすることができます (今回は hosts をキャッシュしません)。

enable-cache           passwd  yes	
positive-time-to-live  passwd  600
negative-time-to-live  passwd  20	
suggested-size         passwd  211
keep-hot-count         passwd  20	
check-files            passwd  yes		
enable-cache           group  yes	
positive-time-to-live  group  3600	
negative-time-to-live  group  60	
suggested-size         group  211	
keep-hot-count         group  20	
check-files            group  yes	 

LDAP から得た passwd エントリを NSCD プログラムが キャッシュしてしまうということを心に銘記しておいてください。

これはつまり、LDAP サーバ上のユーザ情報に手を加えたときにも NSCD キャッシュは有効なままだということです。この問題は、 check-files ディレクティブによって通常の UNIX ファイルを利用すれば避けられます。 これは対応するファイルが変更されたときにはキャッシュを無効にします。 このような仕組みは一般的なはずなのに、現時点で LDAP には適用されません。LDAP サーバとキャッシュの間の不整合を 避ける方法は、passwd エントリを更新したときに 次のコマンドを打って自分でキャッシュを無効にすることです。

#nscd --invalidate=TABLE	

上記 TABLE のところは passwd, groups, hosts のいずれかになります。

試用時には、混乱を避けるため NSCD を使わないようにしてください。

さらに言えば、NSS と NSCD の使用は大量の ファイルデスクリプタを開いてしまいます。 そのため、システム上の使えるファイルデスクリプタが 簡単に不足してしまいます (これはシステムをハングさせかねません)。

Linux マシン (カーネル 2.2.x) では、 次のようにしてファイルデスクリプタの上限を増やすことができます。

#echo 16384 > /proc/sys/fs/file-max

推奨されるファイルデスクリプタ上限値は、とにかく そのシステムの構成に依存します。

2.2.2.4. LDAP クライアントの設定ファイル

LDAP クライアントの設定ファイルである /etc/ldap.conf は、他の LDAP クライアントからと同様、pam_ldap や nss_ldap からも読まれます。 以下は、そのファイルが今回の環境ではどのようになっているべきかの一例です。

#
# @(#)$Id: ldap.conf,v 2.18 2001/03/28 23:35:00 lukeh Exp $
# これは LDAP NSS ライブラリと LDAP PAM モジュールのための設定ファイルです。
# PADL Software
# http://www.padl.com
#
# もしこのファイルに host も base もなければ、そのときは
# _ldap._tcp.[defaultdomain]. という DNS RR が解決されます。
# [defaultdomain] は識別名に割り当てられ、
# 目標のホストはサーバとして使われることになります。
#
# 自分の LDAP サーバです。LDAP を使わずに解決できなくてはなりません。
host 192.111.111.111
#
# 検索ベースの識別名です。
base dc=yourorg, dc=com
#
# 使用する LDAP のバージョンです。(デフォルトは 2 ですが、
# OpenLDAP 2.0.x や Netscape Directory Server を使うなら 3 にしてください)
# ldap_version 3
#
# サーバにバインドする識別名です。
# 指定は任意です ― 指定しなければ匿名バインドです。
# binddn cn=manager,dc=padl,dc=com
#
# バインドする資格証明です。
# 指定は任意です ― 指定しなければ資格証明が不要です。
#bindpw secret
#
# ポートです。
# 指定は任意です ― 指定しなければ 389 です。636 は LDAPS 用です。
port 636
#
# 検索スコープです。
#scope sub
#scope one
#scope base
#
# 以下のオプションは nss_ldap 特有のものです。
#
# 自分の libc が使うハッシュのアルゴリズムです。
# 指定は任意です ― 指定しなければ des です。
#crypt md5
#crypt sha
#crypt des
#
# 以下のオプションは pam_ldap 特有のものです。
#
# uid=%s に AND するフィルタです。
pam_filter objectclass=posixAccount
#
# ユーザ ID の属性です。(デフォルトは uid)
pam_login_attribute uid
#
# パスワードポリシーをルート DSE で検索します。
# (Netscape Directory Server に有効です)
# (訳注:ルート DSE については Root Directory Server Specific Entry
# のことだという報告をいただきました。訳者は知りませんでした。)
#pam_lookup_policy yes
#
# このグループのメンバであることを強要します。
#pam_groupdn cn=PAM,ou=Groups,dc=padl,dc=com
#
# グループメンバの属性です。
pam_member_attribute memberuid
# テンプレートログインの属性と、デフォルトのテンプレートユーザです。
# (これ以前のユーザのエントリ内の属性で上書きできます)
#pam_login_attribute userPrincipalName
#pam_template_login_attribute uid
#pam_template_login nobody
#
# ローカルにパスワードをハッシュします。
# University of Michigan 版 LDAP サーバに必要とされます。
# また、もし UNIX-Crypt のハッシュ機構を使用しており、
# かつ NT Synchronization (同期) サービスを使用していないならば
# Netscape Directory Server で有効です。
pam_crypt local
#
# SSL の設定
ssl yes
sslpath /usr/local/ssl/certs

Note: このファイルを読むことのある種々のアプリケーション との問題を避けるために、パラメータと値との間に タブを使わず、スペースひとつだけを使うようお勧めします。

pam_groupdn ディレクティブは LDAP サーバが 一連のクライアントの認証情報を管理している場合に、 ユーザが認可されるのを一部のクライアントだけに限定したい ときに便利です。このディレクティブは NIS の netgroups と同じ機能を 提供することができるのです。

SSL 設定に関するディレクティブはパッケージ内で文書化 されていませんが、SSL を有効にし、LDAP サーバ証明書および CA 証明書を含むファイルが どこに格納されているか指定します。

cert7.db という名前の Netscape 証明書データベースが sslpath 内で検索されます。このファイルにはサーバ証明書と (そのサーバ証明書が自己署名でないかぎり) CA 証明書とを含んでいなければなりません。このファイルを生成するには ふたつの方法 ― Netscape PKCS#11 を使うか Netscape のブラウザを使うか ― があります。

Netscape のブラウザを使う場合は、サーバ上で slapd と stunnel を起動したあとで Netscape Navigator を https://your.ldap.server:636/ という URL に接続すると、自分のデータベースにそのサーバ証明書を入力するよう 促されます。(自己署名の証明書を使わないのであれば) 同様に (CA から供給される) CA 証明書もデータベースにロード しなくてはなりません。ここまで来たら、$HOME/.netscape/cert7.dbsslpath にコピーできます。 上記の作業の際、デフォルトの cert7.db を持つ 初期状態のアカウントで行なう方が好ましいです。なぜなら 自分の証明書データベースには他のサーバ証明書があるかもしれず、あると LDAP クライアントがそれを、信用済みの認証サーバなのだと みなしてしまうからです。いったんサーバ証明書がインポートされた ブラウザは SSL をデバッグするために使えます。 そのブラウザは pam や nss のライブラリのようにふるまうからです。

2.3. 起動

サーバ側で、次のようなコマンドによって、 slapd (LDAP デーモンプロセス) を起動しなくてはいけません。

# slapd	 

もし stunnel を使うなら、LDAPS の 636 番のポート上で 起動しなくてはいけません。次のようにしてください。

  
# /usr/local/sbin/stunnel -r ldap -d 636 -p /usr/local/ssl/certs/stunnel.pem

TLS (OpenSSL) 付きでコンパイルされた OpenLDAP 2.0.x を使うのであれば、次のコマンドでサーバを起動できます。

  
# slapd -h "ldap:/// ldaps:///"

クライアント上で、NSCD を多くのディストリビューションに ふつう含まれている起動スクリプトから起動できます。

 
# /etc/rc.d/init.d/nscd start

PAM と NSS が適切に設定されていれば、これで十分のはずです。

2.4. アカウントの保守管理

ここまで来た時点で、LDAP クライアントツールを使って アカウント作成と保守管理ができるはずです。

残念ながら汎用的なツールのほとんどは Un*x アカウントの管理用にはできていません。 それに見合う機能があるように思えるものは、 LDAP Browser/Editor (http://www-unix.mcs.anl.gov/~gawor/ldap) があり、それは 色々な書式でパスワードの設定ができ、サーバに接続するために SSL を使用 できます。

2.5. 既知の制限事項

単独のマスタサーバによる (スレーブサーバのない) NIS の場合と同様に、レプリケーションを利用しない LDAP は認証機構にとって 「a single point of failure (単一機器の障害がシステム全体の 障害となってしまう弱点)」であると言えます。 ですから LDAP レプリケーションを実装することは、認証という目的のためには一層 重要と言えます。OpenLDAP (slapd) によるサーバはレプリケーション機能を 備えています。

2.6. ファイルのパーミッション

以下は認証システムで使われるファイルに 適用されているべきパーミッションの一部です。

 
-rw-r--r--  root.root /etc/ldap.conf
-rw-------  root.root /usr/local/etc/openldap/slapd.conf
-rwxr-xr-x  root.root /lib/security/pam_ldap.so.1
-rw-r--r--  root.root /lib/libnss_ldap-2.1.2.so
-rw-r--r--  root.root /usr/local/ssl/certs/cert7.db
-rw-------  root.root /usr/local/ssl/certs/stunnel.pem	

Notes

[1]

LDAP データベースの 複製をサーバ間で行なう仕組み

[2]

NIS で割り当てている場合は異なります。

[3]

ひとつのエントリが複数の objectclass に属することができます。

[4]

ウラ技として、Netscape Communicator の証明データベースを使うこともできます。