コンテンツにスキップ

LDAPとOpenLDAPの全体像

LDAP はディレクトリ情報を階層構造で扱うためのプロトコルとデータモデル。OpenLDAP は LDAP サーバーと関連ツールの実装。


LDAP は Lightweight Directory Access Protocol の略で、ユーザー、グループ、組織、端末、サービスアカウントなどの情報をディレクトリとして保存・検索・変更するために使われる。

LDAP の特徴は次のとおり。

  • データを階層構造のツリーとして扱う
  • 各データは エントリ として保存される
  • エントリは属性の集合である
  • エントリの名前は DN で一意に表される
  • 検索条件に合うエントリを高速に探す用途に向いている
  • Bind により LDAP サーバーへの認証もできる

LDAP は Linux 専用ではない。アプリケーションのユーザーディレクトリ、社内アドレス帳、認証基盤、ネットワーク機器、メールシステムなどでも使われる。


OpenLDAP は LDAP のオープンソース実装である。

代表的な構成要素は次のとおり。

名前 役割
slapd LDAP サーバー本体
ldapsearch LDAP エントリを検索するクライアントコマンド
ldapadd LDAP エントリを追加するクライアントコマンド
ldapmodify LDAP エントリを変更するクライアントコマンド
ldapdelete LDAP エントリを削除するクライアントコマンド
ldapwhoami Bind した結果の認証 ID を確認するコマンド
slapcat LDAP データベースを LDIF として出力する保守コマンド
slapadd LDIF を LDAP データベースへ直接投入する保守コマンド
slapindex LDAP データベースのインデックスを再構築する保守コマンド

ldapsearch や ldapadd などは LDAP プロトコルで slapd に接続する。 slapcat や slapadd などはデータベースを直接扱うため、用途と注意点が違う。

詳細は LDAP操作と保守コマンド を参照する。


LDAP にユーザー情報を保存しても、それだけで Linux へログインできるわけではない。

Linux ログインでは、主に次の層が関係する。

層 役割
LDAP / OpenLDAP ユーザー・グループ情報やパスワード情報を保存する
NSS ユーザー名、UID、GID、グループなどを検索する
PAM パスワード認証、アカウント検査、セッション処理を行う
nslcd / SSSD NSS / PAM と LDAP サーバーの間をつなぐ

つまり、LDAP は情報源であり、Linux がその情報源を使うには NSS / PAM 側の設定が必要になる。

/etc/passwd だけの構成
Linux application -> NSS -> files -> /etc/passwd
LDAP連携構成
Linux application -> NSS/PAM -> nslcd or SSSD -> LDAP -> slapd

誤解 実際
LDAP は Linux ユーザー専用である LDAP は汎用的なディレクトリサービスである
LDAP にエントリを追加すればログインできる NSS / PAM / nslcd / SSSD の設定が必要
LDAP サーバーが Linux ユーザーを理解している posixAccount などのスキーマとクライアント設定により Linux ユーザーとして扱われる


  • RFC 4510 LDAPv3 関連 RFC の全体インデックス。