From degrawms@rose-hulman.edu  Wed May 27 14:57:46 1998
Received: from degrawms.laptop.rose-hulman.edu (degrawms.laptop.rose-hulman.edu [137.112.206.35])
          by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id OAA11557
          for <bug-followup@FreeBSD.ORG>; Wed, 27 May 1998 14:57:38 -0700 (PDT)
          (envelope-from degrawms@rose-hulman.edu)
Received: from rose-hulman.edu (localhost [127.0.0.1])
	by degrawms.laptop.rose-hulman.edu (8.8.8/8.8.8) with ESMTP id QAA02002
	for <bug-followup@FreeBSD.ORG>; Wed, 27 May 1998 16:53:49 -0500 (EST)
	(envelope-from degrawms@rose-hulman.edu)
Message-Id: <356C8B6C.CFB02088@rose-hulman.edu>
Date: Wed, 27 May 1998 16:53:48 -0500
From: "Michael S. DeGraw-Bertsch" <degrawms@rose-hulman.edu>
Sender: degrawms@degrawms.laptop.rose-hulman.edu
To: bug-followup@FreeBSD.ORG
Subject: [PATCH] misc/6754: adduser.perl doesn't ask for homedir

>Number:         6775
>Category:       misc
>Synopsis:       [PATCH] misc/6754: adduser.perl doesn't ask for homedir
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed May 27 15:00:01 PDT 1998
>Closed-Date:    Fri May 29 10:43:25 PDT 1998
>Last-Modified:  Sun Jun 23 14:42:38 PDT 2002
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: steve 
State-Changed-When: Fri May 29 10:43:25 PDT 1998 
State-Changed-Why:  
Putting [PATCH] before "misc/6754" confuses GNATs into thinking this 
is a new PR.  I have extracted the patch and submitted it as a followup 
to PR #6754. 
>Unformatted:
This is a multi-part message in MIME format.
--------------D9E967148CCCD21BFA83C230
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

I appoligize if this is the wrong place to send this; I'm a bit confused
by the docs.

    At any rate, I just finished this patch for adduser.perl (diff
generated from 2.2.6-RELEASE environment).  The patch extends the script
to allow a different home directory to be created.  The
directory can be anything root wants; it does not automatically append
the username.  The default home directory remains the specified default
home/user name ($home/$dir).

    -Mike


--------------D9E967148CCCD21BFA83C230
Content-Type: text/plain; charset=us-ascii; name="adduser.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="adduser.diff"

*** adduser.perl	Wed May 27 16:25:22 1998
--- adduser.perl.old	Mon Dec 29 18:27:29 1997
***************
*** 173,179 ****
      return $s;
  }
  
! # return default home partition (e.g. "/home")
  # create base directory if nesseccary
  sub home_partition {
      local($home) = @_;
--- 173,179 ----
      return $s;
  }
  
! # return default home partition (f.e. "/home")
  # create base directory if nesseccary
  sub home_partition {
      local($home) = @_;
***************
*** 349,364 ****
      return $shell{$sh};
  }
  
- # return home (full path) for user
- # Note that the home path defaults to $home/$name for batch
- sub new_users_home {
-     local($name) = @_;
-     local($userhome);
- 
-     $userhome = &confirm_list("Enter home directory (full path)", 1, "$home/$name", "");
-     return $userhome;
- }
- 
  # return free uid and gid
  sub new_users_id {
      local($name) = @_;
--- 349,354 ----
***************
*** 547,553 ****
  Gid:	  $g_id ($group_login)
  Class:	  $class
  Groups:	  $group_login $new_groups
! HOME:     $userhome
  Shell:	  $sh
  EOF
  
--- 537,543 ----
  Gid:	  $g_id ($group_login)
  Class:	  $class
  Groups:	  $group_login $new_groups
! HOME:	  $home/$name
  Shell:	  $sh
  EOF
  
***************
*** 688,701 ****
      # name: Username
      # fullname: Full name
      # sh: shell
-     # userhome: home path for user
      # u_id: user id
      # g_id: group id
      # class: login class
      # group_login: groupname of g_id
      # new_groups: some other groups
      local($name, $group_login, $fullname, $sh, $u_id, $g_id, $class, $new_groups);
-     local($userhome);
      local($groupmembers_bak, $cryptpwd);
      local($new_users_ok) = 1;
  
--- 678,689 ----
***************
*** 707,713 ****
  	$name = &new_users_name;
  	$fullname = &new_users_fullname($name);
  	$sh = &new_users_shell;
-         $userhome = &new_users_home($name);
  	($u_id, $g_id) = &new_users_id($name);
  	$class = &new_users_class($defaultclass);
  	($group_login, $defaultgroup) =
--- 695,700 ----
***************
*** 726,739 ****
  	    $cryptpwd = crypt($password, &salt) if $password ne "";
  	    # obscure perl bug
  	    $new_entry = "$name\:" . "$cryptpwd" .
! 		"\:$u_id\:$g_id\:$class\:0:0:$fullname:$userhome:$sh";
  	    &append_file($etc_passwd, "$new_entry");
  	    &new_users_pwdmkdb("$new_entry");
  	    &new_users_group_update;
  	    &new_users_passwd_update;  print "Added user ``$name''\n";
  	    &new_users_sendmessage;
  	    &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
! 	    &home_create($userhome, $name, $group_login);
  	} else {
  	    $new_users_ok = 0;
  	}
--- 713,726 ----
  	    $cryptpwd = crypt($password, &salt) if $password ne "";
  	    # obscure perl bug
  	    $new_entry = "$name\:" . "$cryptpwd" .
! 		"\:$u_id\:$g_id\:$class\:0:0:$fullname:$home/$name:$sh";
  	    &append_file($etc_passwd, "$new_entry");
  	    &new_users_pwdmkdb("$new_entry");
  	    &new_users_group_update;
  	    &new_users_passwd_update;  print "Added user ``$name''\n";
  	    &new_users_sendmessage;
  	    &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
! 	    &home_create($name, $group_login);
  	} else {
  	    $new_users_ok = 0;
  	}
***************
*** 775,781 ****
      &new_users_passwd_update;  print "Added user ``$name''\n";
      &sendmessage($name, @message_buffer) if $send_message ne "no";
      &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
!     &home_create("$home/$name", $name, $group_login);
  }
  
  # ask for password usage
--- 762,768 ----
      &new_users_passwd_update;  print "Added user ``$name''\n";
      &sendmessage($name, @message_buffer) if $send_message ne "no";
      &adduser_log("$name:*:$u_id:$g_id($group_login):$fullname");
!     &home_create($name, $group_login);
  }
  
  # ask for password usage
***************
*** 960,987 ****
  
  # create HOME directory, copy dotfiles from $dotdir to $HOME
  sub home_create {
!     local($homedir, $name, $group) = @_;
!     local($rootdir);
  
      if (-e "$homedir") {
  	warn "HOME Directory ``$homedir'' already exist\a\n";
  	return 0;
      }
  
-     # if the home directory prefix doesn't exist, create it
-     # First, split the directory into a list; then remove the user's dir
-     @dir = split('/', $homedir); pop(dir);
-     # Put back together & strip to get directory prefix
-     $rootdir = &stripdir(join('/', @dir));
- 
-     if (!&mkdirhier("$rootdir")) {
- 	    # warn already displayed
- 	    return 0;
-     }
- 
      if ($dotdir eq 'no') {
! 	if (!mkdir("$homedir", 0755)) {
! 	    warn "$dir: $!\n"; return 0;
  	}
  	system 'chown', "$name:$group", $homedir;
  	return !$?;
--- 947,963 ----
  
  # create HOME directory, copy dotfiles from $dotdir to $HOME
  sub home_create {
!     local($name, $group) = @_;
!     local($homedir) = "$home/$name";
  
      if (-e "$homedir") {
  	warn "HOME Directory ``$homedir'' already exist\a\n";
  	return 0;
      }
  
      if ($dotdir eq 'no') {
! 	if (!mkdir("$homedir",0755)) {
! 	    warn "mkdir $homedir: $!\n"; return 0;
  	}
  	system 'chown', "$name:$group", $homedir;
  	return !$?;
***************
*** 1016,1021 ****
--- 992,998 ----
      $dir = &stripdir($dir);
      local($user_partition) = "/usr";
      local($dirname) = &dirname($dir);
+ 
  
      -e $dirname || &mkdirhier($dirname);
  

--------------D9E967148CCCD21BFA83C230--

