libpam-ldapのインストール

LDAPでのログインを可能にするためlibpam-ldapをインストールします。
# 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$