ldapadd
ldapaddは LDIF に書いた新規エントリを、LDAP プロトコル経由で LDAP サーバーへ追加するコマンド。
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
Section titled “ldapaddで使うLDIF”ldapadd では、追加したいエントリをそのまま LDIF に書く。
dn: uid=ldapuser,ou=people,dc=example,dc=comobjectClass: inetOrgPersonobjectClass: posixAccountuid: ldapusercn: LDAP Usersn: UseruidNumber: 10000gidNumber: 10000homeDirectory: /home/ldapuserloginShell: /bin/bash通常、追加用 LDIF には changetype: add を書かなくてもよい。
よく使うオプション
Section titled “よく使うオプション”| オプション | 意味 |
|---|---|
-f file |
読み込む LDIF ファイル |
-x |
Simple Bind を使う |
-D DN |
Bind DN を指定する |
-W |
Bind パスワードを対話入力する |
-H URI |
LDAP サーバーの URI を指定する |
-ZZ |
StartTLS を必須にする |
-c |
エラーがあっても処理を続ける |
-n |
実際には変更せず、何をするか表示する |
-c は複数エントリを一括追加するときに便利だが、途中で失敗しても処理が進むため、結果確認を必ず行う。
何が検査されるか
Section titled “何が検査されるか”ldapadd は起動中の slapd へ LDAP プロトコルで接続する。
ldapadd -> slapd -> ACL check -> schema check -> databaseそのため、次の検査を受ける。
- Bind したユーザーに追加権限があるか
- DN の親エントリが存在するか
- 必須属性が足りているか
- 許可されない属性を入れていないか
- 属性値の構文が正しいか
- 同じ DN のエントリがすでに存在しないか
よくある失敗
Section titled “よくある失敗”| メッセージの例 | 主な原因 |
|---|---|
No such object |
親 DN が存在しない |
Already exists |
同じ DN のエントリがすでにある |
Object class violation |
objectClass に対して属性が足りない、または許可されない属性がある |
Insufficient access |
Bind した DN に追加権限がない |
Invalid syntax |
属性値の形式がスキーマに合わない |
Debian manpages
Section titled “Debian manpages”- ldapmodify(1)
ldapmodifyとldapaddの man page。ldapaddは追加モードのldapmodifyとして扱われる。