Diff for /loncom/Attic/lcuseradd between versions 1.16 and 1.22

version 1.16, 2001/11/15 19:08:00 version 1.22, 2002/09/16 13:27:40
Line 9 Line 9
 # 10/27,10/29,10/30 Scott Harrison  # 10/27,10/29,10/30 Scott Harrison
 # YEAR=2001  # YEAR=2001
 # 10/21,11/13,11/15 Scott Harrison  # 10/21,11/13,11/15 Scott Harrison
   # YEAR=2002
   #   May 19, 2002 Ron Fox
   #      - Removed creation of the pulic_html directory.  This directory
   #        can now be added in two ways:
   #        o The user can add it themselves if they want some local web
   #          space which may or may not contain construction items.
   #        o LonCapa will add it if/when the user is granted an Author
   #          role.
 #  #
 # $Id$  # $Id$
 ###  ###
Line 40  use strict; Line 48  use strict;
 # ------------------------------------------------------- Description of script  # ------------------------------------------------------- Description of script
 #  #
 # This script is a setuid script that should  # This script is a setuid script that should
 # be run by user 'www'.  It creates a /home/USERNAME directory  # be run by user 'www'.  It creates a /home/USERNAME directory.
 # as well as a /home/USERNAME/public_html directory.  
 # It adds a user to the unix system.  # It adds a user to the unix system.
 # Passwords are set with lcpasswd.  # Passwords are set with lcpasswd.
 # www becomes a member of this user group.  # www becomes a member of this user group.
Line 151  else { Line 158  else {
  unlink('/tmp/lock_lcpasswd');   unlink('/tmp/lock_lcpasswd');
  exit 3;   exit 3;
     }      }
     map {chomp} @input;      foreach (@input) {chomp;}
 }  }
   
 my ($username,$password1,$password2)=@input;  my ($username,$password1,$password2)=@input;
   print "Username = ".$username unless $noprint;
 $username=~/^(\w+)$/;  $username=~/^(\w+)$/;
   print "Username after substitution - ".$username unless $noprint;
 my $safeusername=$1;  my $safeusername=$1;
   print "Safe username = $safeusername" unless $noprint;
   
 if (($username ne $safeusername) or ($safeusername!~/^[A-Za-z]/)) {  if (($username ne $safeusername) or ($safeusername!~/^[A-Za-z]/)) {
     print "Error. The user name specified has invalid characters.\n"      print "Error. The user name specified $username $safeusername  has invalid characters.\n"
  unless $noprint;   unless $noprint;
     unlink('/tmp/lock_lcpasswd');      unlink('/tmp/lock_lcpasswd');
     exit 9;      exit 9;
 }  }
 my $pbad=0;  my $pbad=0;
 map {if ((ord($_)<32)||(ord($_)>126)){$pbad=1;}} (split(//,$password1));  foreach (split(//,$password1)) {if ((ord($_)<32)||(ord($_)>126)){$pbad=1;}}
 map {if ((ord($_)<32)||(ord($_)>126)){$pbad=1;}} (split(//,$password2));  foreach (split(//,$password2)) {if ((ord($_)<32)||(ord($_)>126)){$pbad=1;}}
 if ($pbad) {  if ($pbad) {
     print "Error. A password entry had an invalid character.\n";      print "Error. A password entry had an invalid character.\n";
     unlink('/tmp/lock_lcpasswd');      unlink('/tmp/lock_lcpasswd');
Line 199  if (system('/usr/sbin/useradd','-c','LON Line 210  if (system('/usr/sbin/useradd','-c','LON
 }  }
   
 # Make www a member of that user group.  # Make www a member of that user group.
 if (system('/usr/sbin/usermod','-G',$safeusername,'www')) {  my $groups=`/usr/bin/groups www` or exit(6);
   chomp $groups; $groups=~s/^\S+\s+\:\s+//;
   my @grouplist=split(/\s+/,$groups);
   my @ugrouplist=grep {!/www|$safeusername/} @grouplist;
   my $gl=join(',',(@ugrouplist,$safeusername));
   if (system('/usr/sbin/usermod','-G',$gl,'www')) {
     print "Error. Could not make www a member of the group ".      print "Error. Could not make www a member of the group ".
   "\"$safeusername\".\n" unless $noprint;    "\"$safeusername\".\n" unless $noprint;
     unlink('/tmp/lock_lcpasswd');      unlink('/tmp/lock_lcpasswd');
Line 220  print OUT "\n"; Line 236  print OUT "\n";
 print OUT $password1;  print OUT $password1;
 print OUT "\n";  print OUT "\n";
 close OUT;  close OUT;
 ($>,$<)=($wwwid,0);  
 if ($?) {  if ($?) {
     exit 8;      exit 8;
 }  }
   ($>,$<)=($wwwid,0);
 &enable_root_capability;  &enable_root_capability;
   
   # -- Don't add public_html... that can be added either by the user
   #    or by lchtmldir when the user is granted an authorship role.
   
 # ------------------------------ Make final modifications to the user directory  # ------------------------------ Make final modifications to the user directory
 # -- Add a public_html file with a stand-in index.html file  # -- Add a public_html file with a stand-in index.html file
   
 # system('/bin/chmod','-R','0660',"/home/$safeusername");   system('/bin/chmod','-R','0660',"/home/$safeusername");
 system('/bin/chmod','0710',"/home/$safeusername");  system('/bin/chmod','0710',"/home/$safeusername");
 mkdir "/home/$safeusername/public_html",2760;  mkdir "/home/$safeusername/public_html",0755;
   system('/bin/chmod','02770',"/home/$safeusername/public_html");
 open OUT,">/home/$safeusername/public_html/index.html";  open OUT,">/home/$safeusername/public_html/index.html";
 print OUT<<END;  print OUT<<END;
 <html>  <html>
Line 250  This area provides for: Line 270  This area provides for:
 <li>resource construction</li>  <li>resource construction</li>
 <li>resource publication</li>  <li>resource publication</li>
 <li>record-keeping</li>  <li>record-keeping</li>
 </UL>  </ul>
 </BODY>  </body>
 </HTML>  </html>
 END  END
 close OUT;  close OUT;
   
 system('/bin/chown','-R',"$safeusername:$safeusername","/home/$safeusername");  system('/bin/chown','-R',"$safeusername:$safeusername","/home/$safeusername");
   
 # -------------------------------------------------------- Exit script  # -------------------------------------------------------- Exit script

Removed from v.1.16  
changed lines
  Added in v.1.22


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>