「2.07.3 LDAPクライアントの利用方法」の出題内容については以下をご参照ください。
Version 10.0になって少々内容が変更されているようです。
LinuCレベル2 202試験(Version 10.0)出題範囲 | LPI-Japan
https://linuc.org/linuc2/range/202.html
LinuC レベル 1、レベル 2 の出題範囲改定について
https://linuc.org/docs/linuc_ver10.pdf
この記事のアジェンダ
- ldapadd, ldapmodify, ldapdeleteの基本的な使い方の流れを紹介
- ldapsearchの検索フィルタを調べる
ldapaddの使い方
-
用途
- エントリを追加する
-
エントリを追加する流れ
- slappasswdでパスワード生成
- ユーザ追加用のLDIFファイルを用意
- ldapaddでエントリを追加
以下、詳細です。
- slappasswdでパスワード生成
- パスワードを2回入力すると、ハッシュ化された値が出力される。
- この値をLDIFファイルのuserPasswordに設定する。
# slappasswd
New password:
Re-enter new password:
{SSHA}QjbCwSeJK5oPFWutzmAuLtFmU6XHJG1I
- ユーザ追加用のLDIFファイルを用意する
- LDAPディレクトリの情報はLDIF (LDAP Data Interchange Format)という形式で扱うことができる。
- ↓のようなLDIFファイルを用意する。woodyというユーザを追加することを想定。
*ちなめにこれは「inetOrgPerson」というアドレス帳を扱うオブジェクトクラスの雛形で、
ホームディレクトリとか割り当てない。
dn: cn=woody,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp
givenName: woody
sn: woody
uid: woody
mail: woody@xxxx.vs.sakura.ne.jp
userPassword:: QjbCwSeJK5oPFWutzmAuLtFmU6XHJG1I
objectClass: inetOrgPerson
objectClass: top
cn: woody
<注意点>
- userPasswordはslappasswdで生成した値を設定する。
- {SSHA}は除くのと、userPassword:: にするのを忘れずに。
- dnは一意の識別名を記載する。
- 後は<属性タイプ>: <属性値>をつらつらと記載する。
*オブジェクトクラスとかスキーマとかの話は別の記事で書く予定
dn: <識別名>
<属性タイプ>: <属性値>
<属性タイプ>: <属性値>
~
~
<属性タイプ>: <属性値>
- ldapaddでエントリを追加 LDIFファイルを指定し、ldapaddコマンドでエントリを登録する。
# ldapadd -H ldap://127.0.0.1:389 -x -D "cn=Manager,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp" -W -f add_woody.ldif
Enter LDAP Password:
adding new entry "cn=woody,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp"
ldapaddオプション
-H: LDAPサーバのURI (ldap://127.0.0.1:389/)
-h: LDAPサーバのホスト -Hオプションの利用が推奨されているらしい
-p: LDAPサーバのポート番号 -Hオプションの利用が推奨されているらしい
-x: SASLを使わない簡易認証
-D: 認証に使うDN(バインドDN)を指定
指定がない場合は匿名接続になる
-w: バインドDNのパスワードを指定
-W: 対話的にバインドDNのパスワードを指定
-f: LDIFファイルを指定
-Z: STARTTLSを発行して暗号セッションを開設
-ZZ: STARTTLSを発行して暗号セッションを開設
STARTTLSが効かない場合は処理を行わないldapsearchで動作確認
ldapsearchコマンドで追加したエントリの情報が取得できればok.
# ldapsearch -H ldap://127.0.0.1:389 -x -LLL -D "cn=Manager,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp" -b "ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp" -W "(uid=woody)"
Enter LDAP Password:
dn: cn=woody,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp
givenName: woody
sn: woody
uid: woody
mail: woody@xxxx.vs.sakura.ne.jp
userPassword:: QjbCwSeJK5oPFWutzmAuLtFmU6XHJG1I
objectClass: inetOrgPerson
objectClass: top
cn: woody
ldapmodifyの使い方
-
用途
- エントリを変更する
-
エントリを変更する流れ
- 修正用のLDIFファイルを用意
- ldapmodifyでエントリを変更
以下、詳細です。
- 修正用のLDIFファイルを用意
- ↓のようなLDIFファイルを用意する。woodyユーザにdescription属性の情報を追加する想定。
dn: cn=woody,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp
changetype: modify
add: description
description: Sheriff Woody is a 1950s pullstring cowboy doll, and Andy's favorite toy.
- エントリ変更の内容は次の3パターンがある
- 属性追加
dn: cn=woody,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp
changetype: modify
add: description
description: Sheriff Woody is a 1950s pullstring cowboy doll, and Andy's favorite toy.
- 属性修正
dn: cn=woody,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp
changetype: modify
replace: description
description: Sheriff Woody is a 1950s pullstring cowboy doll, and Andy's favorite toy. Appearing in all four Toy Story films, he usually acts as the leader of Andy's toy group.
- 属性削除
dn: cn=woody,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp
changetype: modify
delete: description
- ldapmodifyでエントリを変更
- woodyユーザにdescription属性の情報を追加する。
- ldapmodifyのオプションはldapaddのオプションと同じものが使える。
# ldapmodify -H ldap://127.0.0.1:389 -D "cn=Manager,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp" -W -f /root/ldap_work/modify_woody.ldif
Enter LDAP Password:
modifying entry "cn=woody,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp"
- ldapsearchで動作確認 ldapsearchコマンドで変更したエントリの情報が取得できればok. *description属性が追加されている
# ldapsearch -H ldap://127.0.0.1:389 -x -LLL -D "cn=Manager,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp" -b "ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp" -W "(uid=woody)"
Enter LDAP Password:
dn: ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp
givenName: woody
sn: woody
uid: woody
mail: woody@xxxx.vs.sakura.ne.jp
userPassword:: QjbCwSeJK5oPFWutzmAuLtFmU6XHJG1I
objectClass: inetOrgPerson
objectClass: top
cn: woody
description: Sheriff Woody is a 1950s pullstring cowboy doll, and Andy's favor
ite toy.
ldapdeleteの使い方
-
用途
- エントリを削除する
-
ldapdeleteでエントリを削除
- woodyユーザを削除する。
- ldapdeleteのオプションはldapadd, ldapmodifyのオプションと同じものが使える。
# ldapdelete -H ldap://127.0.0.1:389 -D "cn=Manager,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp" -W "cn=woody,ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp"
Enter LDAP Password:
- ldapsearchで動作確認 ldapsearchコマンドでエントリの情報が取得できないことを確認できればok.
# ldapsearch -H ldap://127.0.0.1:389 -x -LLL -D "cn=Manager,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp" -b "ou=People,dc=xxxx,dc=vs,dc=sakura,dc=ne,dc=jp" -W "(uid=woody)"
Enter LDAP Password:
ldapsearchの検索フィルタ
-
用途
- エントリを検索する
ldapsearchオプション
-L: LDIFv1のフォーマットで表示
-LL: コメントなしで表示
-LLL: コメントなし、LDIFバージョンなしで表示
-b: ベースDNを指定
-Z: STARTTLSを発行して暗号セッションを開設
-ZZ: STARTTLSを発行して暗号セッションを開設
STARTTLSが効かない場合は処理を行わない
*ldapadd, ldapmodify, ldapdeleteと少しオプションが違う
- ldapsearch検索フィルタ
- 通常: (<属性タイプ>=<属性値>)
- AND条件: (&(<属性タイプ>=<属性値>)(<属性タイプ>=<属性値>))
- OR条件: (|(<属性タイプ>=<属性値>)(<属性タイプ>=<属性値>))