[LON-CAPA-cvs] cvs: loncom /build make_domain_coordinator.pl

raeburn lon-capa-cvs@mail.lon-capa.org
Sun, 08 Oct 2006 23:05:19 -0000


raeburn		Sun Oct  8 19:05:19 2006 EDT

  Modified files:              
    /loncom/build	make_domain_coordinator.pl 
  Log:
  Explicitly create group and home directory for the new user, and add www to the group. Although fedora/red hat do this automatically SuSE/SLES does not.  Without this, problems can occur if an author role is later added for a DC account created with this script.      
  
  
Index: loncom/build/make_domain_coordinator.pl
diff -u loncom/build/make_domain_coordinator.pl:1.10 loncom/build/make_domain_coordinator.pl:1.11
--- loncom/build/make_domain_coordinator.pl:1.10	Fri Aug 11 16:09:02 2006
+++ loncom/build/make_domain_coordinator.pl	Sun Oct  8 19:05:18 2006
@@ -11,7 +11,7 @@
 # The LearningOnline Network
 # make_domain_coordinator.pl - Make a domain coordinator on a system
 #
-# $Id: make_domain_coordinator.pl,v 1.10 2006/08/11 20:09:02 albertel Exp $
+# $Id: make_domain_coordinator.pl,v 1.11 2006/10/08 23:05:18 raeburn Exp $
 #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
 #
@@ -229,11 +229,59 @@
 
 =cut
 
+# ----------------------------------------------------------- /usr/sbin/groupadd
+# -- Add group
+$username=~s/\W//g; # an extra filter, just to be sure
+
+print "adding group: $username \n";
+my $status = system('/usr/sbin/groupadd', $username);
+if ($status) {
+    die "Error.  Something went wrong with the addition of group ".
+          "\"$username\".\n";
+}
+my $gid = getgrnam($username);
+
 # ----------------------------------------------------------- /usr/sbin/useradd
+# -- Add user
 
-$username=~s/\W//g; # an extra filter, just to be sure
-`/usr/sbin/useradd $username`; # Add the user with the 'useradd' command.
+print "adding user: $username \n";
+my $status = system('/usr/sbin/useradd','-c','LON-CAPA user','-g',$gid,$username);
+if ($status) {
+    system("/usr/sbin/groupdel $username");
+    die "Error.  Something went wrong with the addition of user ".
+          "\"$username\".\n";
+}
+
+print "Done adding user\n";
+# Make www a member of that user group.
+my $groups=`/usr/bin/groups www`;
+# untaint
+my ($safegroups)=($groups=~/:\s*([\s\w]+)/);
+$groups=$safegroups;
+chomp $groups; $groups=~s/^\S+\s+\:\s+//;
+my @grouplist=split(/\s+/,$groups);
+my @ugrouplist=grep {!/www|$username/} @grouplist;
+my $gl=join(',',(@ugrouplist,$username));
+print "Putting www in user's group\n";
+if (system('/usr/sbin/usermod','-G',$gl,'www')) {
+    die "Error. Could not make www a member of the group ".
+          "\"$username\".\n";
+}
+
+# Check if home directory exists for user
+# If not, create one.
+if (!-e "/home/$username") {
+    if (!mkdir("/home/$username",0710)) {
+        print "Error. Could not add home directory for ".
+          "\"$username\".\n";
+    }
+}
 
+if (-d "/home/$username") {
+    system('/bin/chown',"$username:$username","/home/$username");
+    system('/bin/chmod','-R','0660',"/home/$username");
+    system('/bin/chmod','0710',"/home/$username");
+}
 =pod
 
 =item 3 (as root). enter in a password