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に出力される