Database JUNKY

MySQL,MariaDBを中心としたブログです

ldap clientの一括設定処理

動作完全未保障なんですが・・・・ldap clientの自動設定 shell を作ってみました、このシェルは、かなーり昔に投稿した、「OpenLDAPでアカウントを一元管理!~サーバの構築~クライアントの設定手順」をベースに(きっと)作成されております。当方の環境では無事に動きました、

shellは以下の通りとなります。

#!/bin/bash

echo "#**********************************************************"
echo "# ServerのLdapClientの設定を自動で行う"
echo "# ldap serverがあることが、ldapclientがインストールされていること"
echo "# ldap serverは以下のサイトでの構築を前提に作成しております"
echo "# http://www.s-quad.com/wordpress/?p=11"
echo "#**********************************************************"

# 共通変数
# 日付ファイル
_wdate=`date +"%Y%m%d%H%M%S"`
# 各種コンフィグファイルのバックアップ用のディレクトリを指定
_backupdir=/backups/${HOSTNAME}
# ワーク用のディレクトリを指定(このディレクトリ配下に作成されたファイルは、削除されます
_workdir=/tmp
# ldap serverのip address を指定
_ldapserver=192.168.101.40
# ldap配下におかないユーザーをカンマ区切りで指定する
_nss_initgroups_ignoreusers="root,ldap,named,avahi,haldaemon,mysql,postgres,db2inst1,httpd"
# baseDNの設定
_basedn_dc1=mydc
_basedn_dc2=com
# root権限になれるグループ配列を生成
_sudogroup=()
# sudo -i でroot権限になれるグループを指定(複数登録可能)
_sudogroup=("${_sudogroup[@]}" "mydcadmingroup")
# sudo -i でroot権限になれるユーザー配列を生成
_sudousers=()
# sudo -i でroot権限になれるユーザーを指定(複数登録可能)
_sudousers=("${_sudousers[@]}" "panda")

# bindDNの設定
_binddn_cn=proxy
_binddn_dc1=mydc
_binddn_dc2=com
_bindpw=password

# 初期処理
if [ ! -d $_backupdir ]; then
 echo "create directory $_backupdir"
 mkdir -p $_backupdir
fi

if [ ! -d $_workdir ]; then
 echo "create directory $_workdir"
 mkdir -p $_workdir
fi

echo " *** ldap client setting start *** "

# ldap clientの設定を行う
authconfig --enableldap --enableldapauth --ldapserver=${_ldapserver} \
  --ldapbasedn="dc=${_basedn_dc1},dc=${_basedn_dc2}" --update

cat << LDPFILE > ${_workdir}/ldap.conf
base dc=${_basedn_dc1},dc=${_basedn_dc2}
binddn cn=${_binddn_cn},dc=${_binddn_dc1},dc=${_binddn_dc2}
bindpw ${_bindpw}
timelimit 120
bind_timelimit 120
idle_timelimit 3600
nss_initgroups_ignoreusers ${_nss_initgroups_ignoreusers}
uri ldap://${_ldapserver} ldap://192.168.101.66
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5
bind_policy soft

LDPFILE

sleep 2

chmod 777 /etc/ldap.conf

echo "mv -f /etc/ldap.conf ${_backupdir}/ldap.conf.${HOSTNAME}.${_wdate}"
mv -f /etc/ldap.conf ${_backupdir}/ldap.conf.${HOSTNAME}.${_wdate}
echo "cat ${_workdir}/ldap.conf > /etc/ldap.conf"

sleep 2 

cat ${_workdir}/ldap.conf > /etc/ldap.conf

rm -f ${_workdir}/ldap.conf

echo "> system-auth 設定 start"
# ログイン時に自動的にディレクトリを作成するような設定を追記する
cnt=`cat /etc/pam.d/system-auth | grep -i pam_mkhomedir.so | wc -l`

if [ "$cnt" = "0" ];
then
  echo "--> ADD session     optional      pam_mkhomedir.so skel=/etc/skel umask=022 "
  echo "session     optional      pam_mkhomedir.so skel=/etc/skel umask=022" >> /etc/pam.d/system-auth
else
  echo "--> 既に設定済みのため処理をスキップします"
fi

echo "> system-auth 設定 end"

# sudoの設定
chmod 775 /etc/sudoers

echo "> sudo user 設定 start"
for (( I = 0; I < ${#_sudousers[@]}; ++I )) do   cnt=`cat /etc/sudoers | grep -i ${_sudousers[$I]} | wc -l`   if [ "$cnt" = "0" ];   then     echo "--> ADD ${_sudousers[$I]}       ALL=(ALL)       ALL"
    echo "${_sudousers[$I]}       ALL=(ALL)       ALL" >> /etc/sudoers
  else
    echo "--> ${_sudousers[$I]}:既に設定済みのため処理をスキップします"
  fi

done
echo "> sudo user 設定 end"
echo " "
echo "> sudo group 設定 start"
for (( I = 0; I < ${#_sudogroup[@]}; ++I )) do   cnt=`cat /etc/sudoers | grep -i ${_sudogroup[$I]} | wc -l`   if [ "$cnt" = "0" ];   then     echo "--> ADD %${_sudogroup[$I]}       ALL=(ALL)       ALL"
    echo "%${_sudogroup[$I]}       ALL=(ALL)       ALL" >> /etc/sudoers
  else
    echo "--> ${_sudogroup[$I]}:既に設定済みのため処理をスキップします"
  fi
done

echo "> sudo group 設定 end"

chmod 440 /etc/sudoers

echo " *** ldap client setting complate *** "

exit 0

こんな感じです。色々と中途半端の部分が多いですね、皆様の環境に合わせて修正いただければ、きっと動くと思います。