以前のエントリで、SolarisにOpenLDAPを導入する方法を紹介しました。今回は、そのOpenLDAPにユーザ情報を持たせて認証できるようにするところまでを紹介します。
[blog] SolarisにOpenLDAPを導入する
まず、設定ファイルで用いる管理者のパスワードを、slappasswdで暗号化します。slappasswdは、多くの場合/usr/local/sbinの下にあります。slappasswdで生成された暗号化パスワードはどこかにコピーしておきましょう。ちなみに下のコードで書かれている「xxx...xxx」てのは、もっとランダムな文字列になります。
# slappasswd
New password:
Re-enter new password:
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxx
その後、/usr/local/etc/openldap/slapd.conf で、次のように設定します。
database bdb
suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxx
access to *
by dn="cn=Manager,dc=example,dc=com" write
by self write
by * read
この設定の中で、「dc=XXX」という部分がありますが、これはそれぞれの組織にあったものをつけるといいと思います。他のWebページで紹介されているものは、大部分はURLのドメインの部分を指定しているようです。
ここまで来たら、とりあえずLDAPサーバが立ち上がるかテストしてみましょう。起動スクリプトは、別のエントリで紹介しているので、そちらを参照してください。
[blog] OpenLDAPの自動起動用スクリプト
これで実行してみて、立ち上がるようならユーザ情報の追加を行います。立ち上がらないようなら、設定ファイルでのスペルミスやパスの設定に問題がないかを確認してみましょう。
ユーザ情報の追加を行う前に、ユーザ情報のスキーマ(属性の構造の定義ファイル)を作成します。幸いなことに、特に複雑なことをしないなら、以下のソースをちょっと変更するだけで大丈夫です。仮に、このソースのファイル名を「base.ldif」とします。
dn: dc=example,dc=com
objectClass: dcObject
objectclass: organization
dc: example
o: Example Corporation
dn: cn=Manager, dc=example,dc=com
objectClass: organizationalRole
cn:Manager
dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group
ソースを改造できたら、これをldapに食わせます。ldapにこのソースを追加するには、ldapaddコマンドを使います。
# ldapadd -f base.ldif -x -D "cn=Manager,dc=example,dc=com" -W
これでldapの中にソースで設定したオブジェクトを追加することができました。さて、ここからはこれまでマシン上で管理されてきたアカウント情報をLDAPサーバにコピーする作業です。移転する作業を行う前に、MigrationToolsがマシン上にあるかどうかを確認しましょう。MigrationToolsとは、NISや普通のユーザ管理ファイルからLDAPに自動的にコピーさせるためのPerlスクリプト群です。
/usr/share/openldap/migrationの下にファイルがあることが多いですが、もしない場合はWeb上からダウンロードしてきましょう。公式ページの下の方に、ファイルのリンクがあります。
[web] Migration Tools
MigrationToolsが手に入ったら、そのファイルの中の「migrate_common.ph」のパラメータを環境に合わせて設定します。
$DEFAULT_MAIL_DOMAIN = "example.com";
$DEFAULT_BASE = "dc=example,dc=com";
それから、/etc/passwdと/etc/groupをそれぞれ適当なファイルとしてコピーします。コピーされたファイルで、移転したくないユーザやグループの情報を削除します。以下の説明では、ユーザ情報ファイルをuserlist、グループ情報ファイルをgrouplistというファイルにしたものとします。
# ./migrate_passwd.pl userlist > userlist.ldif
# ./migrate_group.pl grouplist > grouplist.ldif
# ldapadd -f userlist.ldif -x -D "cn=Manager,dc=example,dc=com" -W
# ldapadd -f grouplist.ldif -x -D "cn=Manager,dc=example,dc=com" -W
migrate_passwd.plやmigrate_group.plの実行権限がついていないことがあるので、chmodコマンドで実行できるようにしてください。ldapaddコマンドを入力後は、slapd.confで設定した(暗号化前の)パスワードを入力すればよいです。
参考にしたWebページは次のとおりです。
[web] 既存のユーザアカウントをLDAPサーバに追加するには - @IT
[web] LinuxでLDAPサーバを構築するには - @IT