1 May 2010 11:56
r63914 - trunk/src/libpam-localoffline/debian
<pere <at> alioth.debian.org>
2010-05-01 09:56:05 GMT
2010-05-01 09:56:05 GMT
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):
RSS Feed