# apt-get install libpam-ldap Make local root Database admin: No Database requires logging in: No Local crypt to use when changing passwords: clear設定は/etc/pam_ldap.confに書き込まれます。 Make local root Database adminをyesにするとpam_ldap.confのrootbinddnがセットされると共に /etc/ldap.secretが作成されます。 これによりpamがroot権限で呼ばれた場合、 cn=admin,dc=hoehoe,dc=japanの権限でアクセスすることができるようになりますが、 特にその権限がなくてもログイン認証や本人によるパスワード変更には支障ありません。
パスワードはLDAPデータベース中で生のまま保存します。 これによりpptpd-mschapやapopで生のパスワードを参照できるようにします。
pamの動作は/etc/pam.d/の下の設定ファイルで指定されますので、 このファイルを編集します。
# vi /etc/pam.d/login # # The PAM configuration file for the Shadow `login' service # ... # Disallows other than root logins when /etc/nologin exists # (Replaces the `NOLOGINS_FILE' option from login.defs) auth requisite pam_nologin.so # This module parses /etc/environment (the standard for setting # environ vars) and also allows you to use an extended config # file /etc/security/pam_env.conf. # (Replaces the `ENVIRON_FILE' setting from login.defs) auth required pam_env.so auth sufficient pam_ldap.so account sufficient pam_ldap.so password sufficient pam_ldap.so # Standard Un*x authentication. The "nullok" line allows passwordless # accounts. auth required pam_unix.so nullok use_first_pass ... # The standard Unix authentication modules, used with NIS (man nsswitch) as # well as normal /etc/passwd and /etc/shadow entries. For the login service, # this is only used when the password expires and must be changed, so make # sure this one and the one in /etc/pam.d/passwd are the same. The "nullok" # option allows users to change an empty password, else empty passwords are # treated as locked accounts. # # (Add `md5' after the module name to enable MD5 passwords the same way that # `MD5_CRYPT_ENAB' would do under login.defs). # # The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in # login.defs. Also the "min" and "max" options enforce the length of the # new password. password required pam_unix.so nullok obscure min=4 max=8 try_first_pass ...このファイルは、例えばloginの認証(auth)ではauthの項目が上から順に参照されます。 そのためそれぞれの項目毎に順番が重要になります。 use_first_passがないとPasswordプロンプトがpam_ldapのものとpam_unixのものと2回出ます。
authはloginでの認証に使われますが、 accountはaccount情報を得る場合(パスワードがexpireされていないかどうか、expire間隔を得る)、 passwordはパスワードを変更する場合(上記でexpireな場合)に用いられます。
/etc/pam.d/passwdも同じようにします。
# vi /etc/pam.d/passwd # # The PAM configuration file for the Shadow `passwd' service # # ... password sufficient pam_ldap.so password required pam_unix.so nullok obscure min=4 max=8 try_first_pass ...その他/etc/pam.d/のファイルも必要なものは/usr/doc/libpam-ldap/examples/pam.d/と同様に編集します。
ではテストしてみましょう。
login: moke Password: abcdef Last login: Tue Jul 30 17:35:08 2002 from eagle.hoehoe.japan on pts/0 Linux icarus 2.4.18 #1 Tue Jul 23 12:08:20 JST 2002 i686 unknown moke$ passwd Enter login(LDAP) password: abcdef New password: newpass Re-enter new password: newpass LDAP password information changed for moke passwd: password updated successfully moke$