桂島@横浜です.

> LDAPを使うときのはまりポイントですが、
> LDAPが入ったjailではgroupファイルをLDAPで引かないよう設定しましょう。
> もし、LDAPで引く設定だとLDAPの起動でgroupを見て、LDAPが起動してない
> からgroupが引けないという状況になってLDAP (slapd)が起動しません。
> もう一つのポイントはjail内部からNISやLDAPを引けるようにファイアウォール
> を設定することです。

これは同一のホストでLDAPサーバとnss_ldapを併用する場合のはまりパターンなの
ですが, これには3種類の回避方法があります.

一つ目はある意味正統的な方法で, nss_ldap.confファイルでbind_timelimitを
設定し, 同時にbind_policyを"soft"に設定する方法です.

この方法では起動時にbind_timelimitだけ待った後に接続失敗でファイルの方を
見に行くようになります. でもどうしてもbind_timelimitだけは待ち時間がかかる
ため, 起動をできるだけ速やかにおこないたいという向きには勧められません.

二つ目はLDAPサーバ自体はnss_ldapを使わないjail環境で立ち上げる方法です. こ
の場合, LDAPサーバについてはLDAPを参照しないため速やかに立ち上がります.

ただ, この場合であってもLDAPサーバが立ち上がる以前にLDAPエントリを参照する
プログラム(例えばnamed等)が立ち上がると, そこでけっつまずくことになりま
す. そこで/etc/rc.d/jailのキーワード行を標準的な

# PROVIDE: jail
# REQUIRE: LOGIN cleanvar
# BEFORE: securelevel
# KEYWORD: nojail shutdown

から

# PROVIDE: jail
# REQUIRE: syslogd cleanvar
# BEFORE: SERVERS securelevel
# KEYWORD: nojail shutdown

の様にして, 起動ポイントをsyslogdが起動した後, 他の各種サーバ類が起動する
前にしてLDAPサービスが事前に立ち上がるようにします. この方法だとLDAPサーバ
を論理的に別ホストにできますから, 将来的なサーバ構成の変更などに対しても柔
軟に対応できるのでお勧めです.

三つ目の方法は起動/シャットダウン時に"/etc/nsswitch.conf"を書き換えるスク
リプトを用意する方法です.

この方法は例えばモバイル環境などでスレーブLDAPサーバを持ち歩かねばならない
ような場合, jail用の余分なアドレスが無かったりする時に便利です. 参考として
"/usr/local/etc/rc.d/nss_ldap"の例を添付しておきます. rc.confに

nss_ldap_enable="YES"
nss_ldap_self="YES"

と記述しておくと, 自動的に/etc/nsswitch.confを書き換える様になります.

-- 
Katsurajima "Raven" Naoto(桂島 直人)
Family Emblem: Circle and Left 3 Clove-TOMOE(丸に左三つ丁子巴)
e-mail: 
[メールアドレス保護]

Attachment: nss_ldap
Description: Binary data

メールによる返信