Ubuntu10.10 に OpenLDAPサーバのインストール&設定

今回はUbuntu10.10にOpenLDAPのインストールしたときのメモ。
このLDAP(エルダップって読むっけ?)に認証情報を一元管理できるので便利。
個人使用ではいらないって言われそうだけど、便利なものは使えるようにしてしまおう!

ヒント つ Ubuntu公式ドキュメント

パッケージからのインストール。

インストール自体は簡単。ターミナル*1から以下のコマンドを実行するだけ。

sudo apt-get install slapd ldap-utils

サーバー設定

無事インストールが終わったので設定変更。
/etc/openldap/slapd.conf のファイルを編集っと……ってないぞ!?
おぉ、/etc/ldap/ディレクトリなのか……

ってクライアント用設定ファイル「ldap.conf」やスキーマはあるけどサーバ設定ファイル「slapd.conf」が無いではないか!
どうやら、「サービスを止めないでも設定変更できるようにしようぜ」的な感じで、設定自体もLDAPの中に書くらしい。

まずはschemaの設定

最初にschemaが必要になるので読み込むようにするには以下のコマンドを実行。

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
slapd.conf の代わりの ldif ファイル生成

config内容をLDAPに書くので、LDAP作成ファイルにslapd.confに相当する内容を新しく作成する。
ファイル自体は適当に好きな場所でおk。作業用ディレクトリに作ればいいんじゃない?

vi backend.example.com.ldif

ファイルの中身はこんな感じ。

  • ドメイン*2なんかは適時環境に合わせて変更してね。
  • olcRootPW の内容はLDAP管理者用のパスワードなので、以下のサンプルと同様ではなく複雑なものに変更しよう。
# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=example,dc=com            # ドメインは環境に合わせて変更
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=example,dc=com   # ドメインは環境に合わせて変更
olcRootPW: secret                       # ここはパスワードなので別にしたほうがよい
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none  #ドメインは環境に合わせて変更
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read  # ドメインは環境に合わせて変更

ldifファイルが作成できたらLDAPに登録だ!

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.example.com.ldif

データベース構築

これで環境設定ができたので、最低限必要な情報をLDAPに反映させましょう。

vi frontend.example.com.ldif
# Create top-level object in domain
dn: dc=example,dc=com              # ドメインは環境に応じて変更
objectClass: top
objectClass: dcObject
objectclass: organization
o: Example Organization
dc: Example
description: LDAP Example 

# Admin user.
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: secret               # 前の処理でやった管理者用パスワード

dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

LDIFファイルができたらそれをldapaddコマンドで。

sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f frontend.example.com.ldif

slapcatコマンドで登録した内容が表示されれば無事完了。
後はgroupやユーザアカウントを登録していけばいい。

*1:GUIでは アプリケーションメニュ > アクセサリ > 端末 でターミナル起動

*2:インターネットのURLではなく、DLAPのドメイン