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

第8回 LDAPデータ管理

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

本連載では今までさまざまなソフトウェアとLDAPの連携を紹介してきたわけですが,今回は今までほとんど触れていなかったデータ管理についてお話ししたいと思います。

エントリの追加

リスト1のようなLDIFファイルが存在した場合を考えてみましょう。

リスト1 orig.ldif

dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: example

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

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

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

このエントリをLDAPサーバに追加するためには,図1のようにldapaddコマンドを使用してきました。今さらですが,-xオプションはSASLなどを使用しないシンプル認証,-DではバインドDNの指定,-wではバインドパスワードの指定を行います。SSL/TLSを使用しない限り,シンプル認証では平文のパスワードがネットワーク上を流れるため,注意が必要です。

図1 ファイル指定によるエントリ追加

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

すでにご存じの方もいらっしゃるかもしれませんが,ldapaddコマンドの-fオプションでファイルを指定するのではなく,標準入力から設定を更新する方法もあります図2)。

図2 標準入力を利用したエントリ追加

% ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret < orig.ldif

これをうまく使えば,図3のようにUTF-8形式に変換したファイルをldapaddコマンドに渡すことも可能です。(LDAPサーバに日本語データを登録するためには,値をUTF-8形式に変換しておく必要があります)

図3 UTF-8形式に変換したファイルをldapaddに渡す

% lv -Ou8 orig.ldif | ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret
または
% nkf -w orig.ldif | ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret

また,ldapaddコマンドのファイルの状態をよく見てみるとわかりますが,ldapaddコマンドは多くの場合ldapmodifyコマンドへのリンクとなっており,実行時のコマンド名によって挙動が変化するようになっています(gentoo Linuxやソースからmakeした環境ではシンボリックリンクでしたが,CentOSの場合はハードリンクになっているようです)。

ldapmodifyコマンドは文字通りエントリを編集するために使われますが,-aオプションを使用することで次のようにldapaddコマンド同様,エントリの追加を行うことも可能です。

図4 ldapmodifyによるエントリ追加

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

著者プロフィール

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

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

コメント

  • Re:

    ここにldap adminというものがあります。これも使っていますが、よさそうです。
    http://ldapadmin.sourceforge.net/

    Commented : #1  地方公務員 (2010/12/25, 09:03)

コメントの記入