Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2010
394
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.91 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import sys
  4. import PAM
  5. from getpass import getpass
  6.  
  7. def pam_conv(auth, query_list, userData):
  8.  
  9.     resp = []
  10.  
  11.     for i in range(len(query_list)):
  12.         query, type = query_list[i]
  13.         if type == PAM.PAM_PROMPT_ECHO_ON:
  14.             val = raw_input(query)
  15.             resp.append((val, 0))
  16.         elif type == PAM.PAM_PROMPT_ECHO_OFF:
  17.             val = getpass(query)
  18.             resp.append((val, 0))
  19.         elif type == PAM.PAM_PROMPT_ERROR_MSG or type == PAM.PAM_PROMPT_TEXT_INFO:
  20.             print query
  21.             resp.append(('', 0))
  22.         else:
  23.             return None
  24.  
  25.     return resp
  26.  
  27. service = 'passwd'
  28.  
  29. if len(sys.argv) == 2:
  30.     user = sys.argv[1]
  31. else:
  32.     user = None
  33.  
  34. auth = PAM.pam()
  35. auth.start(service)
  36. if user != None:
  37.     auth.set_item(PAM.PAM_USER, user)
  38. auth.set_item(PAM.PAM_CONV, pam_conv)
  39. try:
  40.     auth.authenticate()
  41.     auth.acct_mgmt()
  42. except PAM.error, resp:
  43.     print 'Go away! (%s)' % resp
  44. except:
  45.     print 'Internal error'
  46. else:
  47.     print 'Good to go!'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement