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

version 1.22, 2002/09/16 13:27:40 version 1.23, 2002/09/19 02:02:59
Line 120  delete @ENV{qw(IFS CDPATH ENV BASH_ENV)} Line 120  delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}
 # Do not print error messages.  # Do not print error messages.
 my $noprint=1;  my $noprint=1;
   
   print "In lcuseradd\n" unless $noprint;
   
 # ----------------------------- Make sure this process is running from user=www  # ----------------------------- Make sure this process is running from user=www
 my $wwwid=getpwnam('www');  my $wwwid=getpwnam('www');
 &disable_root_capability;  &disable_root_capability;
Line 162  else { Line 164  else {
 }  }
   
 my ($username,$password1,$password2)=@input;  my ($username,$password1,$password2)=@input;
 print "Username = ".$username unless $noprint;  print "Username = ".$username."\n" unless $noprint;
 $username=~/^(\w+)$/;  $username=~/^(\w+)$/;
 print "Username after substitution - ".$username unless $noprint;  print "Username after substitution - ".$username unless $noprint;
 my $safeusername=$1;  my $safeusername=$1;
 print "Safe username = $safeusername" unless $noprint;  print "Safe username = $safeusername \n" 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 $username $safeusername  has invalid characters.\n"      print "Error. The user name specified $username $safeusername  has invalid characters.\n"
Line 191  if (-e "/home/$safeusername") { Line 193  if (-e "/home/$safeusername") {
 }  }
   
 # -- Only add user if the two password arguments match.  # -- Only add user if the two password arguments match.
   
 if ($password1 ne $password2) {  if ($password1 ne $password2) {
     print "Error. Password mismatch.\n" unless $noprint;      print "Error. Password mismatch.\n" unless $noprint;
     unlink('/tmp/lock_lcpasswd');      unlink('/tmp/lock_lcpasswd');
     exit 13;      exit 13;
 }  }
   print "enabling root\n" unless $noprint;
 # ---------------------------------- Start running script with root permissions  # ---------------------------------- Start running script with root permissions
 &enable_root_capability;  &enable_root_capability;
   
 # ------------------- Add user and make www a member of the user-specific group  # ------------------- Add user and make www a member of the user-specific group
 # -- Add user  # -- Add user
 if (system('/usr/sbin/useradd','-c','LON-CAPA user',$safeusername)) {  
   print "adding user: $safeusername \n" unless $noprint;
   my $status = system('/usr/sbin/useradd','-c','LON-CAPA user',$safeusername);
   if ($status) {
     print "Error.  Something went wrong with the addition of user ".      print "Error.  Something went wrong with the addition of user ".
   "\"$safeusername\".\n" unless $noprint;    "\"$safeusername\".\n" unless $noprint;
       print "Final status of useradd = $status";
     unlink('/tmp/lock_lcpasswd');      unlink('/tmp/lock_lcpasswd');
     exit 12;      exit 12;
 }  }
   print "Done adding user\n" unless $noprint;
 # Make www a member of that user group.  # Make www a member of that user group.
 my $groups=`/usr/bin/groups www` or exit(6);  my $groups=`/usr/bin/groups www` or exit(6);
 chomp $groups; $groups=~s/^\S+\s+\:\s+//;  chomp $groups; $groups=~s/^\S+\s+\:\s+//;
 my @grouplist=split(/\s+/,$groups);  my @grouplist=split(/\s+/,$groups);
 my @ugrouplist=grep {!/www|$safeusername/} @grouplist;  my @ugrouplist=grep {!/www|$safeusername/} @grouplist;
 my $gl=join(',',(@ugrouplist,$safeusername));  my $gl=join(',',(@ugrouplist,$safeusername));
   print "Putting user in its own group\n" unless $noprint;
 if (system('/usr/sbin/usermod','-G',$gl,'www')) {  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;
Line 228  if (system('/usr/sbin/usermod','-G',$gl, Line 236  if (system('/usr/sbin/usermod','-G',$gl,
 unlink('/tmp/lock_lcpasswd');  unlink('/tmp/lock_lcpasswd');
 &disable_root_capability;  &disable_root_capability;
 ($>,$<)=($wwwid,$wwwid);  ($>,$<)=($wwwid,$wwwid);
   print "Opening lcpasswd pipeline\n" unless $noprint;
 open OUT,"|/home/httpd/perl/lcpasswd";  open OUT,"|/home/httpd/perl/lcpasswd";
 print OUT $safeusername;  print OUT $safeusername;
 print OUT "\n";  print OUT "\n";
Line 237  print OUT $password1; Line 246  print OUT $password1;
 print OUT "\n";  print OUT "\n";
 close OUT;  close OUT;
 if ($?) {  if ($?) {
       print "abnormal exit from close lcpasswd\n" unless $noprint;
     exit 8;      exit 8;
 }  }
 ($>,$<)=($wwwid,0);  ($>,$<)=($wwwid,0);
Line 276  This area provides for: Line 286  This area provides for:
 END  END
 close OUT;  close OUT;
   
   print "lcuseradd exiting\n" unless $noprint;
 system('/bin/chown','-R',"$safeusername:$safeusername","/home/$safeusername");  system('/bin/chown','-R',"$safeusername:$safeusername","/home/$safeusername");
   
 # -------------------------------------------------------- Exit script  # -------------------------------------------------------- Exit script
Line 285  exit 0; Line 296  exit 0;
 # ---------------------------------------------- Have setuid script run as root  # ---------------------------------------------- Have setuid script run as root
 sub enable_root_capability {  sub enable_root_capability {
     if ($wwwid==$>) {      if ($wwwid==$>) {
  ($<,$>)=($>,$<);   ($<,$>)=($>,0);
  ($(,$))=($),$();   ($(,$))=($),0);
     }      }
     else {      else {
  # root capability is already enabled   # root capability is already enabled

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


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