CentOS 7.1 で OpenLDAP 2.4.39 をインストール

ボクの環境では複数の仮想マシンが動いており、さらにOS / Postfix / Devecot / Samba / Apache HTTP Server などがそれぞれ別々にパスワード管理していると面倒なので、LDAPで一元管理している。以下は OpenLDAP 2.4.39 を CentOS 7.1 にインストールする方法だが、Red Hat Enterprise Linux (RHEL) / Oracle Linux (OL) / Scientific Linux (SL) でも同様だろう。

まずはバイナリのインストール。OpenLDAP 2.4 からは自身の設定ファイルもLDAPデータベースで管理されており、設定を修正するたびにLDIFを書いてldapmodifyして……というのが非常に面倒なので、viでファイルを編集する感覚で使えるldapviというコマンドがEPELにあるので、合わせてインストールしておく。

OpenLDAPが内部で使用している Oracle Berkeley DB の設定ファイルのサンプルをコピーし、ファイル所有者を変更する。小規模環境ならサンプル・ファイルそのままで問題ないだろう。

上記で書いたとおり、OpenLDAP自身の設定もLDAPデータベース内にあるので、まずはOpenLDAPを起動しないと設定も変更できない。また、忘れないように、合わせてOS起動時にOpenLDAPが自動起動するようにしておこう。

設定は、ベースDNをcn=configにして (-b cn=config)、SASL認証にして(-Y EXTERNAL)、IPC接続する (-H ldapi:///) することで、rootユーザーからはパスワードなしで読み書きできる。

デフォルトのDCがサンプルのdc=my-domain,dc=comになっているので、まずはこれを自分のものに変更しよう。ldapviの引数はホスト名のキーが-hで、ldapsearchの-Hと微妙に違う点だけ注意。

viを保存して閉じると、以下のようなプロンプトが出る。yで「変更を保存」、eで「編集状態に戻る」、Qで「編集を破棄して終了」、vで「変更をLDIFで表示」だ。

同様に、デフォルトではログをまったく出力しないようになっているので、statsレベルに変更する。

statsレベルにすると問い合わせ1件ごとにログが複数行記録されるが、/var/log/messages ではなくjournalにしか記録されないので問題ないだろう。journalからログは以下のようにして取得できる。

cn=Manager,dc=rewse,dc=jpのパスワードを設定する。ldapviだけでSSHAハッシュする機能があるのだが、これを使うとなぜか認証が通らない(何かゴミが交ざってハッシュされている?)ので、slappasswdで事前作成した。

OSログインにLDAPを使用する場合はNISスキーマを読み込む必要がある。NISスキーマはCosineスキーマに依存しているので、事前にCosineスキーマも読み込む。

LDAPデータベースのアクセス権限を設定する。以下では、userPassword属性は自分自身のものであれば変更可能だが他人は認証にしか使えず、それ以外の属性は自分自身のものであれば変更可能だが他人は読込みしか行えない。

自宅で使う規模で索引が本当に必要なのか怪しいが、とりあえず索引を定義する。

これで初期設定が終わったので、自身のデータベースをあとは作成するだけだ。

コメントを残す