patches/system-tools-backends-08-users.diff
author padraigo
Mon, 10 Apr 2006 15:59:20 +0000
changeset 7035 3cfd68e4e41f
parent 6983 48e372aed92d
child 7329 ea6dd6dd48ce
permissions -rw-r--r--
2006-04-10 Padraig O'Briain <[email protected]> * gnome-system-tools.spec: Add define USE_AUTHEN_PAM for Solaris. * patches/gnome-system-tools-07-users.diff: Update to not encrypt password if USE_AUTHEN_PAM is defined. * patches/system-tools-backends-02-common.diff: Update patch to suppress writing line containing password in debug output in gst_debug_print_to_file in debug.pl. * patches/system-tools-backends-08-users.diff: Update patch to use Authen::PAM to change passwords on Solaris.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
     1
--- /usr/tmp/clean/system-tools-backends-1.4.2/users-conf.in	Mon Jan  2 15:48:06 2006
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
     2
+++ system-tools-backends-1.4.2/users-conf.in	Mon Apr 10 15:21:15 2006
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
     3
@@ -47,6 +47,8 @@
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
     4
 # pw: modifying users/groups and user/group data on FreeBSD.
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
     5
 
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
     6
 
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
     7
+use Authen::PAM;
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
     8
+
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
     9
 BEGIN {
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
    10
   $SCRIPTSDIR = "@scriptsdir@";
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
    11
   if ($SCRIPTSDIR =~ /^@scriptsdir[@]/)
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
    12
@@ -74,6 +76,7 @@
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    13
               "mandrake-7.1", "mandrake-7.2", "mandrake-9.0", "mandrake-9.1", "mandrake-9.2",
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    14
               "mandrake-10.0", "mandrake-10.1",
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    15
               "debian-2.2", "debian-3.0", "debian-sarge",
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    16
+               "nexenta-1.0", "solaris-2.11",
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    17
               "suse-7.0", "suse-9.0", "suse-9.1", "turbolinux-7.0",
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    18
               "slackware-8.0.0", "slackware-8.1", "slackware-9.0.0", "slackware-9.1.0", "slackware-10.0.0", "slackware-10.1.0", "slackware-10.2.0",
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    19
               "freebsd-4", "freebsd-5", "freebsd-6",
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
    20
@@ -115,9 +118,12 @@
6975
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    21
 # --- Mapping constants --- #
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    22
 
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    23
 %users_prop_map = ();
6975
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    24
+
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    25
+sub get_users_prop_array
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    26
+{
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    27
 @users_prop_array = ();
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    28
 
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    29
-if ($$tool{"platform"} eq "Linux")
6975
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    30
+if ($$tool{"system"} eq "Linux" || $$tool{"system"} eq "SunOS")
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    31
 {
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    32
   @users_prop_array = (
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    33
     "key", 0,
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
    34
@@ -157,6 +163,7 @@
6975
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    35
   $users_prop_map {$users_prop_array[$i]} = $users_prop_array[$i + 1];
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    36
   $users_prop_map {$users_prop_array[$i + 1]} = $users_prop_array[$i];
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    37
 }
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    38
+}
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    39
 
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    40
 %groups_prop_map = ();
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    41
 @groups_prop_array = (
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
    42
@@ -315,6 +322,20 @@
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    43
   }
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    44
 }
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    45
 
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    46
+my $nexenta_logindefs_defaults = {
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    47
+  'shell'       => '/bin/bash',
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    48
+  'group'       => 'users',
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    49
+  'skel_dir'    => '/etc/skel/',
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    50
+  'home_prefix' => '/export/home/$user',
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    51
+};
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    52
+
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    53
+my $solaris_logindefs_defaults = {
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    54
+  'shell'       => '/bin/bash',
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    55
+  'group'       => 'users',
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    56
+  'skel_dir'    => '/etc/skel/',
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    57
+  'home_prefix' => '/home/$user',
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    58
+};
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    59
+
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    60
 my $rh_logindefs_defaults = {
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    61
   'shell'       => '/bin/bash',
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    62
   'group'       => '$user',
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
    63
@@ -362,6 +383,8 @@
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    64
   'debian-2.2'      => $rh_logindefs_defaults,
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    65
   'debian-3.0'      => $rh_logindefs_defaults,
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    66
   'debian-sarge'    => $rh_logindefs_defaults,
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    67
+  'nexenta-1.0'    => $nexenta_logindefs_defaults,
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    68
+  'solaris-2.11'    => $solaris_logindefs_defaults,
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    69
   'vine-3.0'        => $rh_logindefs_defaults,
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    70
   'vine-3.1'        => $rh_logindefs_defaults,
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
    71
   'gentoo'	        => $gentoo_logindefs_defaults,
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
    72
@@ -740,7 +763,40 @@
6975
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    73
   push (@shells, "/bin/false") if (stat ("/bin/false"));
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    74
   
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    75
   $ifh = &gst_file_open_read_from_names(@shell_names);
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    76
-  return unless $ifh;
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    77
+  unless ($ifh)
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    78
+  {
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    79
+     if ($gst_dist =~ /solaris/)
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    80
+     {
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    81
+       push (@shells, "/bin/bash");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    82
+       push (@shells, "/bin/csh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    83
+       push (@shells, "/bin/jsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    84
+       push (@shells,  "/bin/ksh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    85
+       push (@shells,  "/bin/pfcsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    86
+       push (@shells, "/bin/pfksh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    87
+       push (@shells, "/bin/pfsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    88
+       push (@shells, "/bin/sh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    89
+       push (@shells, "/bin/tcsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    90
+       push (@shells, "/bin/zsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    91
+       push (@shells, "/sbin/jsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    92
+       push (@shells, "/sbin/jsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    93
+       push (@shells, "/sbin/pfsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    94
+       push (@shells, "/sbin/sh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    95
+       push (@shells, "/usr/bin/bash");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    96
+       push (@shells, "/usr/bin/csh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    97
+       push (@shells, "/usr/bin/jsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    98
+       push (@shells, "/usr/bin/ksh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
    99
+       push (@shells, "/usr/bin/pfcsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   100
+       push (@shells, "/usr/bin/pfksh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   101
+       push (@shells, "/usr/bin/pfsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   102
+       push (@shells, "/usr/bin/sh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   103
+       push (@shells, "/usr/bin/tcsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   104
+       push (@shells, "/usr/bin/zsh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   105
+       push (@shells, "/usr/xpg4/bin/sh");
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   106
+       $$hash{"shelldb"} = \@shells;
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   107
+     }
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   108
+     return;
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   109
+  }
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   110
+  
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   111
 
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   112
   while (<$ifh>)
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   113
   {
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   114
@@ -879,6 +935,11 @@
6983
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   115
   {
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   116
     $command = "$cmd_pw usermod -n " . $username . " -c \'" . $comment . "\'";
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   117
   }
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   118
+  elsif ($gst_dist =~ /^solaris/)
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   119
+  {
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   120
+    ($fname, $office, $office_phone, $home_phone) = @line;
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   121
+    $command = "$cmd_usermod" . " -c \'" . $fname . "\' " . $username; 
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   122
+  }
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   123
   else
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   124
   {
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   125
     ($fname, $office, $office_phone, $home_phone) = @line;
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   126
@@ -886,7 +947,7 @@
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   127
     $fname = "-f \'" . $fname . "\'";
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   128
     $home_phone = "-h \'" . $home_phone . "\'";
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   129
 
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   130
-    if ($gst_dist =~ /^debian/  || $gst_dist =~ /^archlinux/)
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   131
+    if ($gst_dist =~ /^debian/  || $gst_dist =~ /^archlinux/ || $gst_dist =~ /^nexenta/)
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   132
     {
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   133
       $office = "-r \'" . $office . "\'";
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   134
       $office_phone = "-w \'" . $office_phone . "\'";
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   135
@@ -903,6 +964,30 @@
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   136
   &gst_file_run ($command);
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   137
 }
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   138
 
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   139
+$service = "passwd";
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   140
+$username = "";
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   141
+$newpassword = "";
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   142
+
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   143
+sub my_conv_func {
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   144
+  my @res;
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   145
+  while ( @_ ) {
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   146
+      my $code = shift;
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   147
+      my $msg = shift;
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   148
+      my $ans = "";
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   149
+
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   150
+      $ans = $username if ($code == PAM_PROMPT_ECHO_ON() );
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   151
+      if ($code == PAM_PROMPT_ECHO_OFF() ) {
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   152
+        $ans = $newpassword;
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   153
+        $ans = $newpassword;
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   154
+
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   155
+      }
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   156
+
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   157
+      push @res, (PAM_SUCCESS(),$ans);
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   158
+  }
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   159
+  push @res, PAM_SUCCESS();
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   160
+  return @res;
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   161
+}
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   162
+
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   163
 sub add_user
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   164
 {
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   165
 	my ($data) = @_;
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   166
@@ -932,6 +1017,38 @@
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   167
     print $pwdpipe $$data[$users_prop_map{"password"}];
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   168
     &gst_file_close ($pwdpipe);
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   169
   }
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   170
+  elsif ($gst_dist =~ /^nexenta/)
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   171
+  {
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   172
+    my $pwdpipe;
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   173
+    $home_parents = $$data[$users_prop_map{"home"}];
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   174
+    $home_parents =~ s/\/+[^\/]+\/*$//;
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   175
+    &gst_file_run ("$tool_mkdir -p $home_parents");
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   176
+
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   177
+    $command = "$cmd_useradd" . " -d \'" . $$data[$users_prop_map{"home"}] .
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   178
+     "\' -g \'"    . $$data[$users_prop_map{"gid"}] .
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   179
+     "\' -s \'"    . $$data[$users_prop_map{"shell"}] .
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   180
+     "\' -u \'"    . $$data[$users_prop_map{"uid"}] .
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   181
+     "\' \'"       . $$data[$users_prop_map{"login"}] . "\'";
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   182
+    &gst_file_run ($command);
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   183
+    &gst_file_run("echo " . $$data[$users_prop_map{"login"}] . ":" . $$data[$users_prop_map{"password"}] . " | chpasswd -e");
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   184
+  }
6983
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   185
+  elsif ($gst_dist =~ /^solaris/)
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   186
+  {
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   187
+    $home_parents = $$data[$users_prop_map{"home"}];
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   188
+    $home_parents =~ s/\/+[^\/]+\/*$//;
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   189
+    &gst_file_run ("$tool_mkdir -p $home_parents");
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   190
+
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   191
+    $command = "$cmd_useradd" . " -d \'" . $$data[$users_prop_map{"home"}] .
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   192
+     "\' -g \'"    . $$data[$users_prop_map{"gid"}] .
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   193
+     "\' -m -s \'"    . $$data[$users_prop_map{"shell"}] .
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   194
+     "\' -u \'"    . $$data[$users_prop_map{"uid"}] .
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   195
+     "\' \'"       . $$data[$users_prop_map{"login"}] . "\'";
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   196
+    &gst_file_run ($command);
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   197
+    $username = $$data[$users_prop_map{"login"}];
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   198
+    $newpassword = $$data[$users_prop_map{"password"}];
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   199
+    ref($pamh = new Authen::PAM($service, $username, \&my_conv_func));
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   200
+    $pamh->pam_chauthtok(PAM_NO_AUTHTOK_CHECK());
6983
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   201
+  }
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   202
   else
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   203
   {
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   204
     $home_parents = $$data[$users_prop_map{"home"}];
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   205
@@ -967,9 +1084,33 @@
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   206
      " -H 0"; # pw(8) reads password from STDIN
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   207
 
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   208
     $pwdpipe = &gst_file_run_pipe($command, $GST_FILE_WRITE);
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   209
-    print $pwdpipe $$data[$users_prop_map{"password"}];
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   210
+    print $pwdpipe $$new_data[$users_prop_map{"password"}];
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   211
     &gst_file_close ($pwdpipe);
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   212
   }
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   213
+  elsif ($gst_dist =~ /^nexenta/)
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   214
+  {
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   215
+    $command = "$cmd_usermod" . " -d \'" . $$new_data[$users_prop_map{"home"}] .
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   216
+     "\' -g \'" . $$new_data[$users_prop_map{"gid"}] .
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   217
+     "\' -l \'" . $$new_data[$users_prop_map{"login"}] .
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   218
+     "\' -s \'" . $$new_data[$users_prop_map{"shell"}] .
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   219
+     "\' -u \'" . $$new_data[$users_prop_map{"uid"}] .
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   220
+     "\' \'" . $$old_data[$users_prop_map{"login"}] . "\'";
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   221
+    &gst_file_run ($command);
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   222
+    &gst_file_run("echo " . $$new_data[$users_prop_map{"login"}] . ":" . $$new_data[$users_prop_map{"password"}] . " | chpasswd -e");
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   223
+  }
6975
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   224
+  elsif ($gst_dist =~ /^solaris/)
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   225
+  {
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   226
+    $command = "$cmd_usermod" . " -d \'" . $$new_data[$users_prop_map{"home"}] .
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   227
+     "\' -g \'" . $$new_data[$users_prop_map{"gid"}] .
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   228
+     "\' -s \'" . $$new_data[$users_prop_map{"shell"}] .
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   229
+     "\' -u \'" . $$new_data[$users_prop_map{"uid"}] .
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   230
+     "\' \'" . $$old_data[$users_prop_map{"login"}] . "\'";
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   231
+    &gst_file_run ($command);
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   232
+    $username = $$old_data[$users_prop_map{"login"}];
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   233
+    $newpassword = $$new_data[$users_prop_map{"password"}];
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   234
+    ref($pamh = new Authen::PAM($service, $username, \&my_conv_func));
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   235
+    $pamh->pam_chauthtok(PAM_NO_AUTHTOK_CHECK());
6975
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   236
+  }
6955
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   237
   else
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   238
   {
fef846f62545 2006-03-16 Padraig O'Briain <[email protected]>
padraigo
parents:
diff changeset
   239
     $command = "$cmd_usermod" . " -d \'" . $$new_data[$users_prop_map{"home"}] .
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   240
@@ -1026,8 +1167,24 @@
6983
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   241
 
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   242
     foreach $user (@$u)
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   243
     {
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   244
-      $command = "$cmd_gpasswd -a \'" . $user .
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   245
-        "\' " . $$data[$groups_prop_map{"name"}];
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   246
+      if ($gst_dist =~ /^solaris/)
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   247
+      {
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   248
+        my ($groups, @a);
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   249
+        $command = "groups \'" . $user . "\'";
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   250
+        $groups = &gst_file_run_backtick ($command);
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   251
+        chomp ($groups);
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   252
+        @a = split (/ /, $groups);
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   253
+        $groups = join (',', @a);
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   254
+
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   255
+        $command = "$cmd_usermod -G " . $groups . "," .
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   256
+                $$data[$groups_prop_map{"name"}] .  " " .
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   257
+                $user . " ";
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   258
+      }
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   259
+      else
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   260
+      {
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   261
+        $command = "$cmd_gpasswd -a \'" . $user .
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   262
+          "\' " . $$data[$groups_prop_map{"name"}];
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   263
+      }
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   264
       &gst_file_run ($command);
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   265
     }
48e372aed92d 2006-03-29 Padraig O'Briain <[email protected]>
padraigo
parents: 6981
diff changeset
   266
   }
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   267
@@ -1069,25 +1226,62 @@
6981
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   268
       $max_o = $#$o;
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   269
       for ($i = 0, $j = 0; $i <= &max ($max_n, $max_o); ) {
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   270
         $r = $$n[$i] cmp $$o[$j];
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   271
-        $r *= -1 if (($$o[$j] eq "") || ($$n[$i] eq ""));
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   272
 
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   273
-        if ($r < 0) { # add this user to the group.
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   274
-          $command = "$cmd_gpasswd -a \'" . $$n[$i] . "\' \'" . 
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   275
-            $$new_data[$groups_prop_map{"name"}] . "\'";
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   276
+        if ($r > 0) { # add this user to the group.
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   277
+          if ($gst_dist =~ /^solaris/)
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   278
+          {
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   279
+            my ($groups, @a);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   280
+            $command = "groups \'" . $$n[$i] . "\'";
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   281
+            $groups = &gst_file_run_backtick ($command);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   282
+            chomp ($groups);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   283
+            @a = split (/ /, $groups);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   284
+            $groups = join (',', @a);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   285
+
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   286
+            $command = "$cmd_usermod -G " . $groups . "," .
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   287
+                $$new_data[$groups_prop_map{"name"}] .  " " .
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   288
+                $$n[$i] . " ";
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   289
+          }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   290
+          else
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   291
+          {
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   292
+            $command = "$cmd_gpasswd -a " . $$n[$i] . " " .  $$new_data[$groups_prop_map{"name"}] . " ";
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   293
+          }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   294
           $i ++;
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   295
-				
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   296
+
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   297
           &gst_file_run ($command);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   298
-			  } elsif ($r > 0) { # delete the user from the group.
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   299
-          $command = "$cmd_gpasswd -d \'" . $$o[$j] . "\' \'" . 
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   300
-            $$new_data[$groups_prop_map{"name"}] . "\'";
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   301
+        } elsif ($r < 0) { # delete the user from the group.
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   302
+          if ($gst_dist =~ /^solaris/)
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   303
+          {
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   304
+            my ($groups, @a, $k);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   305
+            $command = "groups \'" . $$o[$j] . "\'";
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   306
+            $groups = &gst_file_run_backtick ($command);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   307
+            chomp ($groups);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   308
+            @a = split (/ /, $groups);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   309
+            for ($k = 0; $k < $#a + 1; $k++)
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   310
+            {
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   311
+              if ($a[$k] eq $$new_data[$groups_prop_map{"name"}])
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   312
+              {
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   313
+                splice (@a, $k, 1);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   314
+                last;
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   315
+              }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   316
+            }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   317
+            $groups = join (',', @a);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   318
+
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   319
+            $command = "$cmd_usermod -G " . $groups . " " .
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   320
+                $$o[$j] . " ";
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   321
+          }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   322
+          else
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   323
+          {
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   324
+            $command = "$cmd_gpasswd -d \'" . $$o[$j] . "\' \'" .
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   325
+              $$new_data[$groups_prop_map{"name"}] . "\'";
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   326
+          }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   327
           $j ++;
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   328
-				
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   329
+
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   330
           &gst_file_run ($command);
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   331
-			  } else { # The information is the same. Go to next tuple.
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   332
+        } else { # The information is the same. Go to next tuple.
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   333
           $i ++; $j ++;
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   334
-			  }	
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   335
-		  }	
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   336
-	  }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   337
+        }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   338
+      }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   339
+    }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   340
   }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   341
 }
fdec5bd8d234 2006-03-28 Padraig O'Briain <[email protected]>
padraigo
parents: 6976
diff changeset
   342
 
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   343
@@ -1204,6 +1398,7 @@
6975
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   344
 		elsif ($$tree[0] eq "group_last_modified") { &xml_parse_group_last_modified ($$tree[1], $hash); }
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   345
 		elsif ($$tree[0] eq "userdb") { &xml_parse_userdb ($$tree[1], $hash); }
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   346
 		elsif ($$tree[0] eq "groupdb") { &xml_parse_groupdb ($$tree[1], $hash); }
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   347
+		elsif ($$tree[0] eq "use_md5")  { }
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   348
 		elsif ($$tree[0] eq "shelldb")  { }
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   349
 		elsif ($$tree[0] eq "profiledb")  { &xml_parse_profiledb ($$tree[1], $hash); }
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   350
 		else
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   351
@@ -1323,6 +1518,7 @@
6976
6b7c7c8fd70e 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6975
diff changeset
   352
 		  if ($$tree[0] eq "users") { $line[$groups_prop_map{$$tree[0]}] = $$tree[1]; }
6b7c7c8fd70e 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6975
diff changeset
   353
 			else { $line[$groups_prop_map{$$tree[0]}] = $$tree[1][2]; }
6b7c7c8fd70e 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6975
diff changeset
   354
 		}
6b7c7c8fd70e 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6975
diff changeset
   355
+		elsif ($$tree[0] eq "allows_to") { }
6b7c7c8fd70e 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6975
diff changeset
   356
 		else
6b7c7c8fd70e 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6975
diff changeset
   357
 		{
6b7c7c8fd70e 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6975
diff changeset
   358
 		  &gst_report ("xml_unexp_tag", $$tree[0]);
7035
3cfd68e4e41f 2006-04-10 Padraig O'Briain <[email protected]>
padraigo
parents: 6983
diff changeset
   359
@@ -1627,6 +1823,7 @@
6975
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   360
 $tool = &gst_init ($name, $version, $description, $directives, @ARGV);
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   361
 &gst_platform_ensure_supported ($tool, @platforms);
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   362
 
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   363
+&get_users_prop_array ();
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   364
 &get_login_defs_prop_array ();
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   365
 &get_profiles_prop_array   ();
baa1ef4b8ff2 2006-03-27 Padraig O'Briain <[email protected]>
padraigo
parents: 6955
diff changeset
   366