うまいぼうぶろぐ

linuxとhttpdとperlのメモ

ldap 利用時のnsswitch.conf

2015年追記


記憶にないけどたぶん↓の内容はRHEL5系。気になったのでRHEL6系でやってみたら

passwd:     files [!notfound=return] ldap

て書いてもローカルユーザをldapサーバに聞きにいってたのでようわからん。一旦この内容忘れよう。

追記ここまで。



やたらldapサーバのセッション数が多いのでtcpdump、ngrep とかで調べた。

今までは nsswitch.conf に

passwd:     files ldap
shadow:     files ldap
group:      files ldap

と書くと、files で見つかれば、ldapには聞きにいかないと思っていたけど、そんなことなかった。

ldap.conf でnss_initgroups_ignoreusers にユーザを列挙すると、そのユーザについてはldapに聞きにいかないことは知っていたけど、まさかローカルにいてるユーザ名についても聞きにいってたなんて。。。

対処法

  • ldap.conf で設定

nss_initgroups_ignoreusers に列挙すればそのユーザは聞きにいかなくなる。ただし、ローカルにユーザ追加するたびに追記しないとだめ?

  • nsswitch.conf で設定

ref. http://d.hatena.ne.jp/sumii/20071231/p3

こやって書いたらいけそう。

passwd:     files [!notfound=return] ldap
shadow:     files [!notfound=return] ldap
group:      files [!notfound=return] ldap

この設定で id local_user などと実行してもldapに聞かなくなった。

補足1

man nsswitch.confを読んでもなぜ、[success=return] でダメなのかわからんけど。(というかエントリに見つかればそこで終わるので、そもそものdefaultの動作だと思うけど)なぜかローカルに存在するユーザについてもldapに聞きにいくのでダメだった。

補足2

"files [!notfound=return]" で設定して、かつnscdが立ち上がっていると 複数のグループに所属しているユーザがプライマリのグループにしか所属してないことになってうまく動かない。(id username, groups username などで確認)気持ち悪いからやめとこう。