/etc/pam.d/system-authをいじったら/etc/nsswitchもチェックしろ!
LDAP+PAMで認証する際の設定ファイルだが、/etc/pam.d/配下に各モジュールの設定ファイルがある中で、system-authを修正するのが常道?loginやpasswd,suなどが共通で参照している。
CentOS4のsystem-authのデフォルトは
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required /lib/security/$ISA/pam_env.so auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok auth required /lib/security/$ISA/pam_deny.so account required /lib/security/$ISA/pam_unix.so account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet account required /lib/security/$ISA/pam_permit.so password requisite /lib/security/$ISA/pam_cracklib.so retry=3 password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow password required /lib/security/$ISA/pam_deny.so session required /lib/security/$ISA/pam_limits.so session required /lib/security/$ISA/pam_unix.so
で、LDAP認証の場合は、
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required /lib/security/$ISA/pam_env.so auth sufficient /lib/security/$ISA/pam_ldap.so use_first_pass auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok auth required /lib/security/$ISA/pam_deny.so account required /lib/security/$ISA/pam_unix.so account [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore] /lib/security/$ISA/pam_ldap.so #account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet #account required /lib/security/$ISA/pam_permit.so password requisite /lib/security/$ISA/pam_cracklib.so retry=3 password sufficient /lib/security/$ISA/pam_ldap.so use_authtok password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow password required /lib/security/$ISA/pam_deny.so session required /lib/security/$ISA/pam_limits.so session required /lib/security/$ISA/pam_unix.so session optional /lib/security/$ISA/pam_ldap.so
これは、MSSさんの案件で設定した内容。
で、忘れがち(それは私だけか?)なのがnsswitch.conf
ここで
#passwd: files #shadow: files #group: files passwd: files ldap shadow: files ldap group: files ldap #hosts: db files ldap nis dns hosts: files dns # Example - obey only what ldap tells us... #services: ldap [NOTFOUND=return] files #networks: ldap [NOTFOUND=return] files #protocols: ldap [NOTFOUND=return] files #rpc: ldap [NOTFOUND=return] files #ethers: ldap [NOTFOUND=return] files bootparams: files ethers: files netmasks: files networks: files protocols: files rpc: files services: files netgroup: files publickey: files automount: files aliases: files
とすることで、/etc/passwd・shadow・groupのファイルをチェックした後にldapに問い合わせを行う事になる。
/etc/pam.d/system-authでLDAPを指定していなくても、nsswitch.confでldapを指定していると/etc/ldap.confで指定したldapサーバに問い合わせに行ってしまい、loginの応答などが遅くなってしまう。