[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