diff -ruN e-smith-lib-2.4.0.old/root/sbin/e-smith/create-system-user e-smith-lib-2.4.0/root/sbin/e-smith/create-system-user --- e-smith-lib-2.4.0.old/root/sbin/e-smith/create-system-user 2003-09-02 14:05:26.000000000 -0700 +++ e-smith-lib-2.4.0/root/sbin/e-smith/create-system-user 2013-05-05 22:22:42.000000000 -0700 @@ -20,7 +20,6 @@ my $user_desc = shift || usage("Must give user desc param"); my $home = shift || usage("Must give home param"); my $shell = shift || usage("Must give shell param"); -my @uid_opts = ("-u", $uid); use User::pwent; use User::grent; @@ -28,7 +27,7 @@ if (my $pw = getpwnam($user)) { my $euid = $pw->uid; - exit 0 if $euid == $uid; + exit 0 if $euid == $uid; # Do not create user if it already exists with correct uid warn ("Users $user exists but has uid of $euid - should be $uid\n"); exit 0; } @@ -38,23 +37,48 @@ my $name = $pw->name; warn "User id of $uid is already taken by user $name\n"; warn "Falling back to a system chosen uid\n"; - @uid_opts = ("-r"); + # We can now go ahead and create the user and group leaving the system to choose uid/gid + die ("Failed to create user $user\n") if + system("/usr/sbin/useradd", + "-r", + "-d", $home, + "-M", + "-s", $shell, + "-c", $user_desc, + $user); + exit (0); } if (my $pw = getgrgid($uid)) { my $name = $pw->name; warn "Group id of $uid is already taken by user $name\n"; + # We can now go ahead and create the user but the gid will be chosen by the system + die ("Failed to create user $user\n") if + system("/usr/sbin/useradd", + "-u", $uid, + "-d", $home, + "-M", + "-s", $shell, + "-c", $user_desc, + $user); } - +else +{ # We can now go ahead and create the user and group - -die("Failed to create user $user\n") if - system("/usr/sbin/useradd", - @uid_opts, - "-d", $home, - "-M", - "-s", $shell, - "-c", $user_desc, - $user); + die ("Failed to create group $uid\n") if + system("/usr/sbin/groupadd", + "-g", $uid, + $user); + + die ("Failed to create user $user\n") if + system("/usr/sbin/useradd", + "-u", $uid, + "-g", $uid, + "-d", $home, + "-M", + "-s", $shell, + "-c", $user_desc, + $user); +} exit 0;