ブログ

LDAPサーバを利用した社内サーバ管理(第3回)

2008年09月11日(木)09:12|天方

LinuxユーザアカウントをLDAPで統合管理する(ノウハウ)

前回(LDAPサーバを利用した社内サーバ管理(第2回))は、Webシステムの開発サーバで統合認証を行うために開発サーバのLDAPの設定を扱いました。 今回はLinuxログイン認証をサーバ毎に制御する方法や、運用時の簡単な管理スクリプト等を紹介したいと思います。

Linuxログイン認証をサーバ毎に制御する方法

まず、Linuxログイン認証をサーバ毎に制御する方法について紹介します。 私の場合はldap.confのpam_filterを使って実現しています。

たとえば、開発サーバAのldap.confのpam_filterを以下のように設定します。

pam_filter &(host=servera)(objectclass=posixAccount)

これは、host属性がserveraという文字列でかつ、objectclass属性がpostfixAcountであるノードのみを認証対象とするという設定となります。

その上で、認証対象としたいユーザのldifにhost属性を追加します。 たとえば、以前に登録サンプルとして利用したnishinosonoアカウントであれば uid=nishinosono,ou=Users,dc=example,dc=comのldifを次のようにします。

dn: uid=nishinosono,ou=Users,dc=example,dc=com objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount cn: nishinosono uid: nishinosono uidNumber: 2000 gidNumber: 2000 homeDirectory: /home/nishinosono gecos: nishinosono host: servera host: serverb loginShell: /bin/zsh userPassword: yyyyyyyyyyyyyy

ここでは、host: serveraとhost: serverbを設定しています。このようにhostを複数設定することもできますので、 一人のユーザに複数サーバへのアクセス権を設定することが可能です。

運用時の簡単な管理スクリプト

今のところ、LDAPのDB変更には簡単なスクリプトを記述して対応しています。

ひとつはldifを初期生成するスクリプトです。あとはldapへのコマンドの発行を簡単にするスクリプトを書いてあります。

スクリプトの使い方は簡単で ./genldif.sh [ユーザ名] [uid] [パスワード] [ユーザ説明] > [ユーザ名].ldif のようにコマンドを実行し「ユーザ.ldif」にそのユーザのldifを生成することができます。 内容はいたって簡単で、 #!/bin/bash   if [ $# -ne 4 ]; then echo "./genldif.sh [user] [uid] [password] [detail]" exit fi   USER=$1 GROUP=$1 P_UID=$2 P_GID=$2 DETAIL=$4   PASSWD=`slappasswd -h {SSHA} -s $3`   echo dn: uid=$USER,ou=Users,dc=example,dc=com echo objectClass: account echo objectClass: posixAccount echo objectClass: top echo objectClass: shadowAccount echo cn: $USER echo uid: $USER echo uidNumber: $P_UID echo gidNumber: $P_GID echo homeDirectory: /home/$USER echo loginShell: /bin/bash echo gecos: $DETAIL echo userPassword: $PASSWD echo "" echo dn: cn=$GROUP,ou=Groups,dc=example,dc=com echo gidNumber: $P_GID echo userPassword:: e01ENX14 echo memberUid: $USER echo objectClass: posixGroup echo objectClass: top echo cn: $USER のようなシェルスクリプトとなっています。

追加と変更はそれぞれ

./ldapadd.sh [ユーザ名].ldif ./ldapmod.sh [ユーザ名].ldif

というコマンドを用意しています。

ldapadd.shは #!/bin/sh ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f $1 のように、ldapmod.shは #!/bin/sh ldapmodify -x -D "cn=Manager,dc=example,dc=com" -W -f $1 のようになっています。

管理ツール

LDAPのちょっとした項目の修正にはツールを使うこともできます。 Windowsであれば、無償で利用できるLDAPAdminが使いやすいです。 ログイン画面と、DNツリーの表示例を示しておきます。

接続ダイアログの設定

接続ダイアログの設定

DNツリーの例

DNツリーの例

この記事に関するお問い合わせはこちら

ページの先頭へ