OpenLDAP 資料一覧

slapd.confの設定項目

2008/3/22更新

対応バージョン: 2.4.8

slapd.confは多くの設定項目があるので、ここでは初期インストール時に有効になっている項目についてのみ説明する。他の設定項目については別資料にて説明する。

まず注意すべき点として、行がスペースで始まっている場合は前の行からの継続であるとみなされる。次に設定項目と設定値の間はスペースでなくタブである必要がある。これらの仕様はトラブルの元になることが多いので意識して設定を行うこと。

以下、それぞれの設定項目について説明する。

スキーマ読み込み

使用するスキーマ定義を読み込む。1行ずつ複数指定可能である。

include    <スキーマ定義ファイル>

例)

include    /usr/local/etc/openldap/schema/core.schema
include    /usr/local/etc/openldap/schema/cosine.schema
include    /usr/local/etc/openldap/schema/inetorgperson.schema

(*) このオプションの取り扱いには注意すること。入れ子になったincludeオプションに制限はなくincludeがループになった場合でも検出されない。

OpenLDAPにはあらかじめ以下のスキーマ定義が用意されている。

この中でcore.schemaは必須であり、それ以外は必要に応じてincludeする。

基本

core.schema

OpenLDAPのコアスキーマ定義

cosine.schema

X.500シリーズ(*1)準拠スキーマ定義

inetorgperson.schema

core.schemaのorganizationalPersonオブジェクトクラス(*2)を拡張し、メールアドレスなどのインターネットで使用する属性を加えたinetOrgPersonオブジェクトクラスが定義されている。

(*1) X.500シリーズは分散ディレクトリサービスに関する世界統一規格。この規格に準拠したネームスペースを使用すれば異なるディレクトリサービス間で相互運用性が確保される。

(*2) organizationalPersonオブジェクトクラスはpersonオブジェクトクラスの拡張。つまり、inetOrgPerson > organizationalPerson > personという継承関係になる。

サービス/プロトコル関連

corba.schema

CORBA関連

java.schema

Java関連

nis.schema

NIS関連

その他

openldap.schema

OpenLDAPプロジェクトPR用

ppolicy.schema (*)

パスワードポリシー用

dyngroup.schema (*)

Netscapeによるダイナミックグループ定義

misc.schema (*)

雑多なスキーマ定義

(*) これらのスキーマは実験用なので実運用にはなるべく使用しないこと!

slapd管理ファイル

slapdのPIDや起動時のコマンドラインオプションを保存するファイルを指定する。

内容はslapd起動時に書き込まれる。

pidfile     /var/run/slapd.pid
argsfile    /var/run/slapd.args

バックエンドデータベース

バックエンドに使用するデータベースの種類を指定する。

database    <データベースタイプ>

データベースは「bdb」(Berkeley DB)を使用するのが一般的であるが、その他にも以下の種類が利用できる。

dnssrv

DNS SRV

hdb

Hierarchical variant of bdb

ldap

Lightweight Directory Access Protocol(代理)

ldbm

軽量DBM

meta

メタディレクトリ

monitor

モニタ

passwd

passwd(5)への読取り専用アクセス

perl

Perlプログラム可能なバックエンド

shell

Shell(外部プログラム)バックエンド

sql

SQLプログラム可能なバックエンド

サフィックス

データツリーのベース部分を定義する。以降のデータは全てこのツリー下に配置される。

suffix    "<ベース指定>"

例えば「dc=example,dc=com」というベースを定義する場合は以下のようになる。

suffix    "dc=example,dc=com"

root DN

管理者のDNを定義する。

rootdn    "<root DN>"

例えば以下のように前述のサフィックスと共に指定する。

rootdn    "cn=Manager,dc=example,dc=com"

rootpw

上記管理者のパスワードを指定する。

rootpw    <root DNのパスワード>

平文で指定することも可能であるが、セキュリティを考慮して通常はSSHA形式などエンコードされた値を使用すべきである。

指定可能な暗号化方式を以下に示す。

CRYPT
MD5
SMD5
SSHA (デフォルト)
SHA

パスワードはOpenLDAP付属のslappasswdコマンドにて生成することができる。

# /usr/local/sbin/slappasswd -s <パスワード> -h '{<暗号化方式>}'
{<暗号化方式>}k3aOoaWZat8snR3O4LmNzHwcWTYV5rPe

出力された結果をそのままrootpwに指定すればよい。例えば以下のように指定する。

rootpw    {SHA}eOZi3nfyPWFJueGFZS5i3jaQMD8=

尚、暗号化方式に「CRYPT」を指定すれば/etc/shadow内のパスワードをそのまま流用できる。

関連資料・記事

directory

データの実体を保存するディレクトリを指定する。

directory   <ディレクトリ>

index

属性毎に管理するインデックスを指定する。

ユーザ情報を扱うposixAccountのように検索キーとして頻繁に使用する属性(uid,uidNumber等)とほとんど使用しない属性(gecos等)がはっきりしている場合には検索キーにインデックスを作成しておくと検索速度が早くなる。

ただ、インデックスを作成するとその分ディスク容量が必要になるので必要に応じて作成するようにする。

設定は以下の書式で行なう。

index {<属性リスト>|default} [<インデックス設定>]
<属性リスト>だけが指定された場合、デフォルトのインデックス(pres,eq)が指定されたものとみなされる。

以下、インデックス設定の種類についてそれぞれ説明する。

pres (存在)

検索例)

uid=*

eq (等価)

検索例)

uid=ldapuser

approx (近似)

検索例)

uid=ldapusr

sub (部分一致)

検索例)

uid=ldap*

none (無し)

例) インデックスのデフォルトセットを存在(presence)と等価性(equality)を管理するように設定

index    default pres,eq

例) objectClassとuid属性型についてデフォルトのインデックス(pres,eq)を管理すように設定

index    objectClass,uid

例) cnとsn属性型について等価性(equality)、部分文字列(substring)、近似(approximate)のインデックスを管理するように設定

index    cn,sn eq,sub,approx

インデックスの設定を行ったらslapindexを使ってインデックスを作成する。

# service slapd stop
# /usr/local/sbin/slapindex
# service slapd start

尚、インデックスはslapd.confのdirectoryで指定されたディレクトリ配下に格納される。

関連資料・記事