[debian-edu-commits] r79916 - trunk/src/libpam-mklocaluser/debian

pere at alioth.debian.org pere at alioth.debian.org
Sat May 4 06:28:33 UTC 2013


Author: pere
Date: 2013-05-04 06:28:32 +0000 (Sat, 04 May 2013)
New Revision: 79916

Modified:
   trunk/src/libpam-mklocaluser/debian/changelog
   trunk/src/libpam-mklocaluser/debian/pam-python.py
Log:
* Make PAM module more robust.  Add to /etc/passwd and /etc/shadow
  using python code instead of calling "echo 'something' >>
  /etc/file" in a subshell.
* Do not try to syslog an exception, as a string is needed in newer
  python versions.

Modified: trunk/src/libpam-mklocaluser/debian/changelog
===================================================================
--- trunk/src/libpam-mklocaluser/debian/changelog	2013-05-03 19:43:53 UTC (rev 79915)
+++ trunk/src/libpam-mklocaluser/debian/changelog	2013-05-04 06:28:32 UTC (rev 79916)
@@ -1,3 +1,13 @@
+libpam-mklocaluser (0.8) UNRELEASED; urgency=low
+
+  * Make PAM module more robust.  Add to /etc/passwd and /etc/shadow
+    using python code instead of calling "echo 'something' >>
+    /etc/file" in a subshell.
+  * Do not try to syslog an exception, as a string is needed in newer
+    python versions.
+
+ -- Petter Reinholdtsen <pere at debian.org>  Sat, 04 May 2013 08:25:53 +0200
+
 libpam-mklocaluser (0.7) unstable; urgency=low
 
   * Rewrite how Popen() is used to ensure the script wait for the

Modified: trunk/src/libpam-mklocaluser/debian/pam-python.py
===================================================================
--- trunk/src/libpam-mklocaluser/debian/pam-python.py	2013-05-03 19:43:53 UTC (rev 79915)
+++ trunk/src/libpam-mklocaluser/debian/pam-python.py	2013-05-04 06:28:32 UTC (rev 79916)
@@ -15,6 +15,12 @@
 import time
 import syslog
 
+def append_line(filename, line):
+  f = open(filename, 'a')
+  f.write(line)
+  f.close()
+
+# FIXME This function always report an error
 def runcmd(pamh, cmd):
   proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,)
   while proc.poll() == None:
@@ -83,15 +89,15 @@
 
       # Can not use adduser, as it refuses to add a user if it already
       # is visible via NSS.
-      cmd = "/bin/echo '%s:x:%d:%d:%s:%s:%s' >> /etc/passwd" \
-            % (user, uid, gid, gecos, newhomedir, shell)
-      runcmd(pamh, cmd)
+      append_line('/etc/passwd', \
+                    '%s:x:%d:%d:%s:%s:%s' % \
+                    (user, uid, gid, gecos, newhomedir, shell))
 
       # Add shadow entry too.
-      # XXX Should only add it if it is missing
-      cmd = "/bin/echo '%s:x:%d:%d:%d:%d:::' >> /etc/shadow" \
-            % (user, pwlastchange, pwminage, pwmaxage, pwwarn)
-      runcmd(pamh, cmd)
+      # FIXME Should only add it if it is missing.  
+      append_line('/etc/shadow', \
+                    '%s:x:%d:%d:%d:%d:::' \
+                    % (user, pwlastchange, pwminage, pwmaxage, pwwarn))
 
       syslog.syslog("Creating local home directory for user '%s'" % user)
       # Copy content of /etc/skel
@@ -107,7 +113,7 @@
         runcmd(pamh, "/usr/sbin/nscd -i passwd")
 
       # Hook for adjusting the freshly created home directory
-      # XXX Should be rewritten in python, I guess
+      # FIXME Should be rewritten in python, I guess
       runcmd(pamh, "if [ -d /etc/mklocaluser.d ]; then ORIGHOMEDIR='%s' USER='%s' /bin/run-parts /etc/mklocaluser.d ; fi" % (homedir, user))
 
       # Let the user know what is going on
@@ -119,7 +125,7 @@
       # and need to be restarted.
       return pamh.PAM_TRY_AGAIN
     except Exception, e:
-      syslog.syslog(e)
+      syslog.syslog("Failure while creating local user: %s " % (e))
       pass
 
   return pamh.PAM_SUCCESS




More information about the debian-edu-commits mailing list