コンテンツにスキップ

ldapadd

ldapadd は LDIF に書いた新規エントリを、LDAP プロトコル経由で LDAP サーバーへ追加するコマンド。


Terminal window
ldapadd \
-x \
-D "cn=admin,dc=example,dc=com" \
-W \
-H ldap://ldap.example.com/ \
-ZZ \
-f user.ldif

この例では、管理者 DN で Bind し、 user.ldif のエントリを LDAP サーバーへ追加する。


ldapadd では、追加したいエントリをそのまま LDIF に書く。

user.ldif
dn: uid=ldapuser,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
uid: ldapuser
cn: LDAP User
sn: User
uidNumber: 10000
gidNumber: 10000
homeDirectory: /home/ldapuser
loginShell: /bin/bash

通常、追加用 LDIF には changetype: add を書かなくてもよい。


オプション 意味
-f file 読み込む LDIF ファイル
-x Simple Bind を使う
-D DN Bind DN を指定する
-W Bind パスワードを対話入力する
-H URI LDAP サーバーの URI を指定する
-ZZ StartTLS を必須にする
-c エラーがあっても処理を続ける
-n 実際には変更せず、何をするか表示する

-c は複数エントリを一括追加するときに便利だが、途中で失敗しても処理が進むため、結果確認を必ず行う。


ldapadd は起動中の slapd へ LDAP プロトコルで接続する。

ldapadd
-> slapd
-> ACL check
-> schema check
-> database

そのため、次の検査を受ける。

  • Bind したユーザーに追加権限があるか
  • DN の親エントリが存在するか
  • 必須属性が足りているか
  • 許可されない属性を入れていないか
  • 属性値の構文が正しいか
  • 同じ DN のエントリがすでに存在しないか

メッセージの例 主な原因
No such object 親 DN が存在しない
Already exists 同じ DN のエントリがすでにある
Object class violation objectClass に対して属性が足りない、または許可されない属性がある
Insufficient access Bind した DN に追加権限がない
Invalid syntax 属性値の形式がスキーマに合わない


  • ldapmodify(1) ldapmodify と ldapadd の man page。 ldapadd は追加モードの ldapmodify として扱われる。