any LDAP experts around

James McDonald james at jamesmcdonald.id.au
Wed Aug 27 05:59:45 PDT 2008


Lonni J Friedman wrote:
> I have a Linux server running OpenLDAP-2.4.10, which a number of
> client systems (Linux & Mac) use for ssh/shell account authentication.
>   I'm hitting the frustrating problem where all attempts by any user
> to change their LDAP password with 'passwd' fail with:
> LDAP password information update failed: Insufficient access
> passwd: Permission denied
>
> I strongly suspect this is due to wrong ACLs in slapd.conf, but I've
> following the official doc (
> http://www.openldap.org/doc/admin23/slapdconfig.html#Configuration%20File%20Example
> ) without any improvement.
>
> I've got the following in /etc/openldap/slapd.conf :
> ####################
> database        bdb
> suffix          "dc=cuda-fs0,dc=foo,dc=com"
> rootdn          "cn=Manager,dc=cuda-fs0,dc=foo,dc=com"
> rootpw          {MD5}XXXXXXXXXXXXXXXXXX==
> access to attrs=userPassword
>       by self write
>       by anonymous auth
>       by dn.base="cn=Manager,dc=cuda-fs0,dc=foo,dc=com" write
>       by * none
> access to *
>       by * read
> ####################
>
> I kicked the LDAP server to debug level 256 to attempt to figure out
> exactly what is going wrong, and saw the following output at the time
> of an attempted (and failed) password change:
>
> conn=8 op=6 BIND
> dn="uid=lfriedman,ou=People,dc=cuda-fs0,dc=foo,dc=com" method=128
> conn=8 op=6 BIND
> dn="uid=lfriedman,ou=People,dc=cuda-fs0,dc=foo,dc=com" mech=SIMPLE ssf=0
> conn=8 op=6 RESULT tag=97 err=0 text=
> conn=8 op=7 MOD dn="uid=lfriedman,ou=People,dc=cuda-fs0,dc=foo,dc=com"
> conn=8 op=7 MOD attr=userPassword
> conn=8 op=7 RESULT tag=103 err=50 text=
>
> That "tag=103 err=50" seems to be the critical bit of info, however
> I've googled on it for a while, and the consensus seems to be that
> incorrect ACLs would cause it.  However since I'm using exactly what
> is suggested in the official dox, that seems unlikely.
>
> /etc/pam.d/passwd on the Linux client systems hasn't changed for ages,
> and contains:
> #########
> auth       include      system-auth
> account    include      system-auth
> password   include      system-auth
> #########
>
> /etc/pam.d/system-auth on the Linux client systems also hasn't changed
> recently, and contains:
> #########
> 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_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 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     [success=1 default=ignore] pam_succeed_if.so service in
> crond quiet use_uid
> session     required      pam_unix.so
> session     optional      pam_ldap.so
> #########
>
> In an attempt to isolate this better, I figured I'd write up a PHP
> frontend to ldapmodify and see if it fared any better.  Sadly, it
> fails as well in all password change attempts:
> PHP Warning:  ldap_mod_replace() [<a
> href='function.ldap-mod-replace'>function.ldap-mod-replace</a>]:
> Modify: Strong(er) authentication required in
> /var/www/html/ldap/ldap.inc on line 56
>
> That error is coming out of here:
>
> $ldapconn = ldap_connect("cuda-fs0.nvidia.com", 389) ;
> $ldapbind = @ldap_bind($ldapconn,"uid=".$PHP_AUTH_USER.",dc=cuda-fs0,dc=nvidia,dc=com",$MPASSWD)
> ;
> if ( ldap_mod_replace ($ldapconn,
> "uid=".$PHP_AUTH_USER.",dc=cuda-fs0,dc=nvidia,dc=com",
> array('userpassword' =>
> "{MD5}".base64_encode(pack("H*",md5($PHP_NEWPASS)))))) {
> 			print "SUCCEDED" ;
> } else {
> 			print "PASSWORD CHANGE FAILED" ;
> }
>
> I'm at a complete loss at this point on what is wrong.
>
>   
Is userpassword or userPassword causing an issue?

You mentioned you can do this as manager so it's definately perms yes?

Weird!





More information about the Linux-users mailing list