Ubuntu 22.04 の ldap-utils は、LDAP サーバーを検索・登録・変更・削除するためのクライアントコマンド群です。389 Directory Server や OpenLDAP 系のサーバーを扱う場合、ldapsearch、ldapadd、ldapmodify、ldapdelete、ldapwhoami を使って、認証、検索範囲、アクセス制御を確認できるようにしておきます。
この記事は、Ubuntu 22.04 の既存環境で LDAP ユーティリティの使い方を読み直すための記事です。新規構築では Ubuntu 26.04 側の記事を優先しつつ、22.04 環境の設定確認や古い構築記録の読み替えに使ってください。
ldap-utilsに含まれる主要コマンド- LDAPS 接続時の CA 証明書確認
ldapsearchで検索範囲と BIND ユーザーを確認する方法ldapaddとldapmodifyの基本cn=Directory Managerに頼りすぎない確認方針
書籍
LDAP – 設定・管理・プログラミング
LDAP の基礎、ディレクトリ設計、検索、認証連携を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
ldap-utils の位置づけ
LDAP サーバー本体を構築しても、検索や登録の確認にはクライアントコマンドが必要です。Ubuntu 22.04 では、主要な LDAP コマンドは ldap-utils パッケージに含まれます。
| コマンド | 用途 |
|---|---|
ldapsearch | LDAP エントリーを検索する |
ldapadd | 新しい LDAP エントリーを追加する |
ldapmodify | 既存エントリーの属性を変更する |
ldapdelete | LDAP エントリーを削除する |
ldapwhoami | BIND した DN を確認する |
インストールする
LDAP サーバーとは別の確認端末やアプリケーションサーバーに、クライアントコマンドだけを入れることもあります。
sudo apt update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ldap-utilsクライアント設定を確認する
OpenLDAP クライアントの設定ファイルは /etc/ldap/ldap.conf です。LDAPS で接続する場合、信頼する CA 証明書の設定が重要です。
grep -v -e '^\s*#' -e '^\s*$' /etc/ldap/ldap.conf
openssl s_client -connect ldap.example.local:636 -servername ldap.example.local < /dev/null内部 CA を使う場合は、CA 証明書を OS の信頼ストアへ入れてから update-ca-certificates で反映します。証明書検証を無効化して常用するのではなく、信頼する CA を正しく登録します。
sudo cp example-ca.crt /usr/local/share/ca-certificates/example-ca.crt
sudo update-ca-certificatesldapsearch で検索する
ldapsearch は LDAP エントリーを検索するコマンドです。まず、読み取り用 BIND ユーザーで検索できるか確認します。
ldapsearch -x \
-H ldaps://ldap.example.local \
-D 'cn=ro,ou=service,dc=example,dc=local' \
-W \
-b dc=example,dc=local \
dn| オプション | 意味 |
|---|---|
-x | SASL ではなく simple bind を使う |
-H | LDAP URI を指定する |
-D | BIND DN を指定する |
-W | パスワードを対話入力する |
-b | 検索の base DN を指定する |
BIND は成功するのに検索結果が出ない場合は、base DN、検索フィルター、アクセス制御を分けて確認します。
Directory Manager と BIND ユーザーを分ける
検証では cn=Directory Manager を使うと操作できますが、これは管理者権限です。通常のサービス連携や確認では、読み取り用、書き込み用、管理用の BIND DN を分けます。
| DN の例 | 用途 |
|---|---|
cn=Directory Manager | 管理者。通常の疎通確認には強すぎる |
cn=ro,ou=service,... | 読み取り専用。SSSD やアプリ参照向き |
cn=rw,ou=service,... | 登録や変更に使う書き込み用 |
ldapadd で追加する
ldapadd は新しいエントリーを登録します。LDIF を標準入力で渡す場合は、登録先 DN、objectClass、必須属性を確認します。
cat <<'EOF' | ldapadd -x \
-H ldaps://ldap.example.local \
-D 'cn=rw,ou=service,dc=example,dc=local' \
-W
dn: cn=test,dc=example,dc=local
objectClass: person
cn: test
sn: test
userPassword: password
EOFldapmodify で変更する
ldapmodify は既存エントリーの属性を追加、変更、削除します。操作内容は LDIF の changetype と属性操作で表します。
cat <<'EOF' | ldapmodify -x \
-H ldaps://ldap.example.local \
-D 'cn=rw,ou=service,dc=example,dc=local' \
-W
dn: cn=test,dc=example,dc=local
changetype: modify
replace: description
description: updated description
EOF変更できない場合は、書き込み用 BIND ユーザーの権限、対象 DN、属性名、スキーマ上の制約を確認します。
ldapdelete で削除する
ldapdelete は既存エントリーを削除します。削除は戻しにくいため、対象 DN を ldapsearch で確認してから実行します。
ldapsearch -x \
-H ldaps://ldap.example.local \
-D 'cn=ro,ou=service,dc=example,dc=local' \
-W \
-b dc=example,dc=local \
'(cn=test)' dn
ldapdelete -x \
-H ldaps://ldap.example.local \
-D 'cn=rw,ou=service,dc=example,dc=local' \
-W \
cn=test,dc=example,dc=localldapwhoami で BIND 結果を見る
ldapwhoami は、指定した認証情報でどの DN として BIND できているかを確認するために便利です。
ldapwhoami -x \
-H ldaps://ldap.example.local \
-D 'cn=ro,ou=service,dc=example,dc=local' \
-Wよく見るトラブル
- LDAPS で証明書検証に失敗する場合は、CA 証明書の信頼設定を確認する
- BIND は成功するが検索結果が出ない場合は、base DN、filter、アクセス制御を確認する
- Directory Manager では見えるが読み取り用 BIND では見えない場合は、アクセス制御を確認する
ldapaddやldapmodifyが失敗する場合は、書き込み権限とobjectClass、必須属性を確認する
まとめ
Ubuntu 22.04 の ldap-utils は、LDAP サーバーを作った後の確認と操作に必要な基本ツールです。検索、追加、変更、削除、BIND 結果の確認をコマンドで切り分けられるようにしておくと、LDAP 認証やアプリケーション連携のトラブルを追いやすくなります。
重要なのは、cn=Directory Manager に頼りすぎないことです。実際のサービス連携では、読み取り専用 BIND、書き込み用 BIND、匿名 BIND の可否を分けて確認します。

