そろそろLDAPにしてみないか?

第8回 LDAPデータ管理

この記事を読むのに必要な時間:およそ 4 分

エントリの編集

orig.ldifリスト2が登録されているLDAPサーバが存在するとして,この中の鈴木さんのメールアドレスをsuzu@example.comに変更したいとします。

もっとも基本的な方法はldapmodifyコマンドを使用することです。ldapaddコマンド同様,-fオプションによるファイル指定,または標準入力からの登録も可能となっています。

リスト2 new1.ldif

dn: cn=suzuki,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
sn: suzuki
cn: suzuki
mail: suzu@example.com

ldapmodifyコマンドを使用し,-fオプションでリスト2のファイルを指定します図5)⁠

図5 new1.ldifにエントリ追加

% ldapmodify -x -D "cn=Manager,dc=example,dc=com" -w secret -f new1.ldif

この方法では,mail属性のみを変更したいだけの場合にも,それ以外のobjectClassやcnなどの属性を定義しておく必要がありました。もう一歩進んだldapmodifyコマンドの使用方法として,リスト3のような書式もあります。

リスト3 new2.ldif

dn: cn=tanaka,ou=People,dc=example,dc=com
changetype: modify
replace: mail
mail: suzu@example.com

図6 new2.ldifにエントリ追加

% ldapmodify -x -D "cn=Manager,dc=example,dc=com" -w secret -f new2.ldif

このように,changetypeという特別な行を使用することにより,以下の例のように必要最低限のデータ量でエントリを更新することができるようになります。

リスト4 例1:メールアドレスを1つ追加

dn: cn=tanaka,ou=People,dc=example,dc=com 
changetype: modify 
add: mail 
mail: newaddress@example.com 

リスト4のLDIFを日本語で説明するとすれば,次のようになるでしょう。

  1. dn: cn=tanaka,ou=People,dc=example,dc=com をこれから編集
  2. 変更内容はmodify
  3. mail属性を追加
  4. mail属性の内容はnewaddress@example.com

同様に,次のような書式も可能です。

リスト5 例2:メールアドレスを新たに置き換え

dn: cn=tanaka,ou=People,dc=example,dc=com
changetype: modify
replace: mail
mail: replace1@example.com
mail: replace2@example.com

この場合,すべてのmail属性を新たな値に置き換えますので,今までのmail属性の内容はすべて失われ,新たな2つのmail属性が登録されます。

次はchangetypeにaddを指定した例です。実質ldapaddと同じ挙動となります。

リスト6 例3:エントリを新規追加

dn: cn=tanaka2,ou=People,dc=example,dc=com 
changetype: add 
objectClass: inetOrgPerson 
sn: tanaka2 
cn: tanaka2 
mail: tanaka2@example.com 

次はエントリの一部を削除する場合です。これにより,dn: cn=tanaka,ou=People,dc=example,dc=comの中にあったmail属性のひとつが削除されます。

リスト7 例4:エントリの一部を削除

dn: cn=tanaka,ou=People,dc=example,dc=com 
changetype: modify
delete: mail
mail: a.tanaka@example.com

今までの操作を1つにまとめることも可能です。その場合は次のように,- (ハイフン)を使って設定を分けるようにします。

リスト8 例5:sn属性を変更し,mail属性を追加

dn: cn=tanaka,ou=People,dc=example,dc=com
changetype: modify
replace: sn
sn: New Name
-
add: mail
mail: new@example.com

これらの用法に関してはldapmodifyコマンドのマニュアルにも記載されていますので,時間があるときにでも参照してみてください。

DNの編集:ldapmodrdn

エントリの中身だけではなく,DN自体を変更するためのコマンドも用意されています。たとえば,

dn: cn=tanaka,ou=People,dc=example,dc=com

というDNを

dn: cn=Taro Tanaka,ou=People,dc=example,dc=com

に変更するためには,図7のようにldapmodrdnコマンドを使用します。わざわざエントリを削除して追加する必要はないため,変更の必要が発生した場合には積極的に使用してみてください。

図7 ldapmodrdnによるDN変更

ldapmodrdn -x -D "cn=Manager,dc=example,dc=com" -w secret -r 'cn=tanaka,ou=People,dc=example,dc=com' 'cn=Taro Tanaka'

著者プロフィール

中満英生(なかみつひでお)

大学時代に出会ったSolarisがきっかけでUNIXの世界へ。その後ホスティングプロバイダ,データセンターで実務経験を積む傍ら,雑誌記事の執筆や技術セミナーの講師を務める。サーバ設定の他,セキュリティに関する著作や技術者エッセイも執筆経験あり。