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 などで確認)気持ち悪いからやめとこう。