LoginSignup
0
0

More than 3 years have passed since last update.

LinuC 202「LDAPクライアントの利用方法」を調べたり、検証したり

Last updated at Posted at 2020-08-15

「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」というアドレス帳を扱うオブジェクトクラスの雛形で、
ホームディレクトリとか割り当てない。

add_woody.ldif
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属性の情報を追加する想定。
modify_woody.ldif
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条件: (|(<属性タイプ>=<属性値>)(<属性タイプ>=<属性値>))
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0