LoginSignup
11
11

More than 5 years have passed since last update.

ldapsearchの検索メモ

Last updated at Posted at 2019-03-29

ldapsearchの検索メモ

最近LDAPのユーザー検索、ユーザー属性追加・削除などの操作をやっていました。
自分の理解を深くするために、整理してメモを書きます。

ユーザー検索

LDAPの中、対象ユーザーの全ての情報を出力する場合:

ldapsearch -x -h localhost -D "cn=Manager,o=company,c=jp" -b "uid=test1111,ou=users,o=company,c=jp" -w "password"

ldapsearchの各オプションの詳細説明は、ldapsearchを参考しました

対象ユーザーのuid番号だけを出力する場合:

ldapsearch -x -h localhost -D "cn=Manager,o=company,c=jp" -b "uid=test1111,ou=users,o=company,c=jp" -w "password" uid | grep ^uid`

ユーザー属性の追加

例:ユーザー情報にメールアドレスを追加

ldapmodify -x -h localhost -D "cn=Manager,o=company,c=jp" -f modify1.ldif -w 'password'

modify1.ldifの内容

dn: uid=test1111,ou=users,o=company,c=jp
changetype: modify
add: mail
mail: test@test.co.jp

ユーザー属性の削除

例:ユーザー情報にメールアドレスを削除

ldapmodify -x -h localhost -D "cn=Manager,o=company,c=jp" -f modify2.ldif -w 'password'

modify2.ldifの内容

dn: uid=test1111,ou=users,o=company,c=jp
changetype: modify
delete: mail

ユーザー属性の更新

例:ユーザー情報にメールアドレスを更新

ldapmodify -x -h localhost -D "cn=Manager,o=company,c=jp" -f modify3.ldif -w 'password'

modify3.ldifの内容

dn: uid=test1111,ou=users,o=company,c=jp
changetype: modify
replace: mail
mail: test2@test.co.jp

複数ユーザーの複数属性を一括変更

例:
ユーザーtest1111にメールアドレスを更新と会社の追加を実施
ユーザーtest1112にメールアドレスを更新と部門の変更を実施

ldapmodify -x -h localhost -D "cn=Manager,o=company,c=jp" -f modify4.ldif -w 'password'

modify4.ldifの内容

dn: uid=test1111,ou=users,o=company,c=jp
changetype: modify
replace: mail
mail: test2@test.co.jp
-
add: o
o: テスト会社

dn: uid=test1112,ou=users,o=company,c=jp
changetype: modify
replace: mail
mail: test1112@test.co.jp
-
replace: ou
ou: 人事部

LDAPから対象ユーザーリストのUIDを取得する

DBに格納されるユーザーのUIDとLDAPにマッピングしたい場合、

検索対象ユーザーのUIDリストを用意

userlist.csv

 test1111
 test1112
 test1113
検索用シェル
#!/bin/bash

numLine=0
users_csvfile=userlist.csv
for line in `cat ${users_csvfile}` ## | while read line
do
 uid=$line
 result=`ldapsearch -x -h localhost -b c=jp "uid=$uid" uid | grep ^uid`
 echo $result >> result.txt
 numLine=$((numLine + 1))
 if [[ $((numLine % 3)) == 0 ]]; then   # 検索対象ユーザーが多い場合、LDAPサーバの負荷を考える必要がある
   echo $numLine: "3件を取得しました。"      # 3件ずつを取得後、1秒を停止
   sleep 1s
 fi
done

これで検索された結果をresult.txtに出力される

11
11
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
11
11