I have installed and configured the ppolicy overlay software on a Red Hat V5.4 server

along with the openldap server software and the following components:

 

openldap-servers-2.3.43-3.el5

python-ldap-2.2.0-2.1

openldap-devel-2.3.43-3.el5

checkpassword-ldap-0.01-1.2.el5.rf

mozldap-6.0.5-1.el5

openldap-2.3.43-3.el5

openldap-debuginfo-2.3.43-3.el5

openldap-servers-overlays-2.3.43-3.el5

nss_ldap-253-22.el5_4

openldap-clients-2.3.43-3.el5

 

PROBLEM:

 

I have notice that when an ldap users’ password expires, and pwdGraceAuthNLimit is set to

a non-zero value...in my case it is set to 1 for testing purposes,  the user is allowed

to login one time.   The next login forces a password change.

 

On the first login, allowed via pwdGraceAuthNLimit, there is no announcement sent to the

user telling them that the password has expired.  Nor that they will have to change their

password on the next login.     I have to wonder if there is also a missing announcement that

might tell the user how many more logins they are permitted given the value of pwdGraceAuthNLimit

 

 It was suggested that the problem may be in the pam configuration.

 

I am using the following /etc/pam.d/system-auth file that is autogenerated by authconfig:

 

#%PAM-1.0

# This file is auto-generated.

# User changes will be destroyed the next time authconfig is run.

auth        required      pam_env.so

auth        sufficient    pam_unix.so nullok try_first_pass

auth        requisite     pam_succeed_if.so uid >= 500 quiet

auth        sufficient    pam_ldap.so use_first_pass

auth        required      pam_deny.so

 

account     required      pam_unix.so broken_shadow

account     sufficient    pam_localuser.so

account     sufficient    pam_succeed_if.so uid < 500 quiet

account     [default=bad success=ok user_unknown=ignore] pam_ldap.so

account     required      pam_permit.so

 

password    requisite     pam_cracklib.so try_first_pass retry=3

password    sufficient    pam_unix.so md5 shadow nis nullok try_first_pass use_authtok

password    sufficient    pam_ldap.so use_authtok

password    required      pam_deny.so

 

session     optional      pam_keyinit.so revoke

session     required      pam_limits.so

session     optional      pam_mkhomedir.so

session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid

session     required      pam_unix.so

session     optional      pam_ldap.so

 

 

I am testing by logging into the client with ssh.   I also have many of the pwd* values

set fairly low for quick testing.   This is the default policy in use:

 

dn: cn=Standard,ou=Policies,dc=mydomain,dc=com

objectClass: top

objectClass: device

objectClass: pwdPolicy

cn: Standard

pwdAttribute: userPassword

pwdLockoutDuration: 15

pwdInHistory: 6

pwdCheckQuality: 0

pwdMinLength: 5

pwdAllowUserChange: TRUE

pwdMustChange: TRUE

pwdMaxFailure: 3

pwdFailureCountInterval: 120

pwdSafeModify: FALSE

pwdLockout: TRUE

pwdReset: TRUE

structuralObjectClass: device

entryUUID: 421d8558-1a33-102f-8b9e-a5541f2aaf30

creatorsName: cn=Manager,dc=mydomain,dc=com

createTimestamp: 20100702143843Z

pwdMinAge: 0

pwdMaxAge: 300

pwdGraceAuthNLimit: 1

pwdExpireWarning: 86400

entryCSN: 20100702154010Z#000000#00#000000

modifiersName: cn=Manager,dc=mydomain,dc=com

modifyTimestamp: 20100702154010Z

 

This is the test users profile:

 

dn: uid=ldap1,dc=mydomain,dc=com

uid: ldap1

cn: ldap1

objectClass: account

objectClass: posixAccount

objectClass: top

uidNumber: 10001

gidNumber: 150

homeDirectory: /home/ldap1

loginShell: /bin/csh

gecos: ldap test user

pwdPolicySubentry: cn=Standard,ou=Policies,dc=mydomain,dc=com

structuralObjectClass: account

entryUUID: 334312be-1a33-102f-8a83-a5541f2aaf30

creatorsName: cn=Manager,dc=mydomain,dc=com

createTimestamp: 20100702143818Z

pwdHistory: 20100702151010Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}BIxGPXPqBY+

 2yK6pY2i+6l7UbE/gaVhY

pwdHistory: 20100702154253Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}q4inOFGO+0N

 c6T0q6FYiiMrPCTTUqQdr

pwdHistory: 20100702183229Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}3T0Cna8AGIg

 X69V7zsDxGiTx/q0ceBnc

userPassword:: e1NTSEF9WkZ0ekJrUWVOQVJrMDhFbDJXd0VNaU1maWlGVURaT28=

pwdChangedTime: 20100702183229Z

pwdGraceUseTime: 20100702184519Z

entryCSN: 20100702184519Z#000000#00#000000

modifiersName: cn=Manager,dc=mydomain,dc=com

modifyTimestamp: 20100702184519Z

 

 

I have examined various log files and enabled debugging in system-auth (now removed to

show the standard autogenerated content) for any clues.  I have examined various

pam modules and library files with strings to see if I could get an idea as to which

module may be at fault.

 

I have to admit I am no pam expert and given the number of combinations and variations

possible in the system-auth file alone, I don't feel comfortable modifying this file

to any great extent.

 

I have omitted the slapd.conf and client ldap.conf files assuming that they are not

at fault and don't have any obvious omissions which could cause a warning messages

to be suppressed during login, but can supply them if required.

 

If the default system-auth file generated by the authconfig utility defeats a feature

of the ldap or other system modules, we need to report this to Red Hat and have the

problem corrected.

 

Any help greatly appreciated.

 

Al Licause