pere | 1 May 2010 11:56
Picon
Favicon

r63914 - trunk/src/libpam-localoffline/debian


Author: pere
Date: 2010-05-01 09:56:05 +0000 (Sat, 01 May 2010)
New Revision: 63914

Modified:
   trunk/src/libpam-localoffline/debian/pam-python.py
Log:
Add logic to create local users during login.  Do not work yet.

Modified: trunk/src/libpam-localoffline/debian/pam-python.py
===================================================================
--- trunk/src/libpam-localoffline/debian/pam-python.py	2010-05-01 09:36:06 UTC (rev 63913)
+++ trunk/src/libpam-localoffline/debian/pam-python.py	2010-05-01 09:56:05 UTC (rev 63914)
 <at>  <at>  -5,14 +5,55  <at>  <at> 
 # and user in /etc/passwd and /etc/group, and create a home directory
 # under /home/ if none exist already.

+import os
 import sys
 import pwd
+import subprocess

+def runcmd(pamh, cmd):
+  proc = subprocess.Popen(cmd, shell=True,  stdout=subprocess.PIPE,)
+  output = proc.communicate()[0]
+  print "output: %s" % output
+
 def check_and_create_localuser(pamh, user):
   userinfo = pwd.getpwnam(user)
-  # Run adduser --disabled-password --homedir /home/$user $user
-  # set $HOME to /home/$user
-  pamh.putenv("HOME=/home/user")
+  uid = userinfo[2]
+  gid = userinfo[3]
+  gecos = userinfo[4]
+
+  # XXX Look up primary group name
+
+  # Ignore users with uid < 1000
+  if userinfo[2] < 1000:
+    return pamh.PAM_SUCCESS
+
+  homedir =  userinfo[5]
+  if None == homedir:
+    print "Home directory is not set for user %s" % user
+    return pamh.PAM_USER_UNKNOWN
+
+  newhomedir = os.path.join("/hom2e/",user)
+  if not os.path.isdir(newhomedir):
+    print "Creating user %s" % (user)
+    try:
+      # Run addgroup
+      cmd = ["addgroup", "--gid", gid, groupname]
+      runcmd(pamh, cmd)
+
+      # Run adduser 
+      cmd = ["adduser",
+             "--disabled-password",
+             "--uid", uid, "--gid", gid, "--gecos", gecos,
+             "--homedir", newhomedir,
+             user]
+      runcmd(pamh, cmd)
+    except Exception, e:
+      print e
+      pass
+
+  # set $HOME to new home directory
+  pamh.putenv("HOME=%s" % (newhomedir))
+
   return pamh.PAM_SUCCESS

 def pam_sm_setcred(pamh, flags, argv):

Gmane