• Open Directory Users on Lion Cannot Change Passwords

    We recently ran into an issue with Open Directory Users on Apple’s OSX Lion. Users were not able to change their passwords using the web interface on a fresh install of Lion with Open Directory. The error we were receiving is below:

    com.apple.passwordreset (2012-01-20 14:00:09,100): Could not change password for user (johnsmith)
    com.apple.passwordreset (2012-01-20 14:00:09,104): Unhandled Error
    Traceback (most recent call last):
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/web/server.py", line 127, in process
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/web/server.py", line 147, in render
        body = resrc.render(self)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/web/resource.py", line 216, in render
        return m(request)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/web/xmlrpc.py", line 172, in render_POST
        d = defer.maybeDeferred(function, *args)
    ---  ---
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 133, in maybeDeferred
        result = f(*args, **kw)
      File "/usr/share/passwordreset/lib/python/PasswordReset.py", line 112, in xmlrpc_changePassword
        return xmlrpx.Fault(FAULT_COULD_NOT_CHANGE_PASSWORD, errorCodes[FAULT_COULD_NOT_CHANGE_PASSWORD] % (username, response['errorCode']))
    exceptions.NameError: global name 'xmlrpx' is not defined

    So our problem was actually very simple. We had setup the users in the Lion Server App, BEFORE we enabled the directory services! So apparently Lion thought they were local user and not Open Directory (LDAP) users. Once we enabled Open Directory, we just had to recreate/reimport all the users and it worked!

    Other known issues for this problem are missing folders. If /Library/Logs/passwordreset folder does not exist, then it also will NOT work. This tends to happen after you restore a Time Machine backup of Lion server:


    Leave a reply