diff -Nur e-smith-base-5.8.0.old/createlinks e-smith-base-5.8.0/createlinks --- e-smith-base-5.8.0.old/createlinks 2021-02-14 17:04:03.823000000 -0500 +++ e-smith-base-5.8.0/createlinks 2021-02-14 17:12:36.219000000 -0500 @@ -313,6 +313,7 @@ event_link("conf-startup", $event, "10"); event_link("user-lock-passwd", $event, "15"); event_link("group-modify-unix", $event, "15"); +event_link("user-rsshd", $event, "16"); event_link("update-passwd", $event, "20"); event_link("count-active-user-accounts", $event, "25"); event_link("conf-modules", $event, "30"); @@ -337,6 +338,7 @@ templates2events("/home/e-smith/ssl.pem/pem", $event); event_link("systemd-default", $event, "05"); event_link("set-hostname", $event, "10"); +event_link("user-rsshd", $event, "16"); event_link("conf-modules", $event, "30"); event_link("conf-startup", $event, "60"); event_link("systemd-reload", $event, "89"); @@ -356,6 +358,7 @@ event_link("systemd-default", $event, "05"); event_link("rmmod-bonding", $event, "10"); event_link("set-hostname", $event, "10"); +event_link("user-rsshd", $event, "16"); event_link("conf-modules", $event, "30"); event_link("conf-startup", $event, "60"); event_link("conf-routes", $event, "89"); @@ -445,6 +448,7 @@ event_link("init-accounts", $event, "05"); event_link("init-passwords", $event, "10"); event_link("conf-startup", $event, "10"); +event_link("user-rsshd", $event, "16"); event_link("conf-modules", $event, "30"); event_link("create-mnt-floppy", $event, "50"); event_link("systemd-reload", $event, "89"); @@ -463,6 +467,7 @@ event_link("conf-startup", $event, "10"); event_link("user-lock-passwd", $event, "15"); event_link("group-modify-unix", $event, "15"); +event_link("user-rsshd", $event, "16"); event_link("update-passwd", $event, "20"); event_link("count-active-user-accounts", $event, "25"); event_link("conf-modules", $event, "30"); @@ -495,6 +500,7 @@ $event = "user-create"; event_link("user-create-unix", $event, "04"); +event_link("user-rsshd", $event, "16"); event_link("count-active-user-accounts", $event, "25"); event_link("user-group-modify", $event, "85"); @@ -516,6 +522,7 @@ $event = "user-modify"; event_link("user-modify-unix", $event, "15"); +event_link("user-rsshd", $event, "16"); event_link("user-group-modify", $event, "85"); $event = "user-modify-admin"; diff -Nur e-smith-base-5.8.0.old/root/etc/e-smith/events/actions/user-create-unix e-smith-base-5.8.0/root/etc/e-smith/events/actions/user-create-unix --- e-smith-base-5.8.0.old/root/etc/e-smith/events/actions/user-create-unix 2013-01-31 10:52:04.000000000 -0500 +++ e-smith-base-5.8.0/root/etc/e-smith/events/actions/user-create-unix 2021-02-14 17:05:46.650000000 -0500 @@ -73,6 +73,7 @@ my $city = $acct->prop('City') || ''; my $street = $acct->prop('Street') || ''; my $shell = $acct->prop('Shell') || '/usr/bin/rssh'; +my $groups = ($shell eq '/usr/bin/rssh')? "shared,rsshusers" : "shared"; if ($ldapauth ne 'enabled') { @@ -91,7 +92,7 @@ "-g", $gid, "-c", "$first $last", "-d", "/home/e-smith/files/users/$userName", - "-G", "shared", + "-G", "$groups", "-m", "-k", "/etc/e-smith/skel/user", "-s", "$shell", @@ -124,7 +125,7 @@ "-e", "$userName\@$domain", "-a", "$tmpattr", "-d", "/home/e-smith/files/users/$userName", - "-G", "shared", + "-G", "$groups", "-m", "-k/etc/e-smith/skel/user", "-s", "$shell", diff -Nur e-smith-base-5.8.0.old/root/etc/e-smith/events/actions/user-group-modify e-smith-base-5.8.0/root/etc/e-smith/events/actions/user-group-modify --- e-smith-base-5.8.0.old/root/etc/e-smith/events/actions/user-group-modify 2005-11-20 23:28:05.000000000 -0500 +++ e-smith-base-5.8.0/root/etc/e-smith/events/actions/user-group-modify 2021-02-14 17:07:22.349000000 -0500 @@ -39,7 +39,7 @@ # actions for all these groups my %modified_groups = map { $_, 1 } @old_groups, $acctdb->user_group_list($userName); # but omit "shared" and user private group -foreach ('shared', $userName) +foreach ('shared', $userName, 'rsshusers') { delete $modified_groups{$_} if exists $modified_groups{$_}; } diff -Nur e-smith-base-5.8.0.old/root/etc/e-smith/events/actions/user-modify-unix e-smith-base-5.8.0/root/etc/e-smith/events/actions/user-modify-unix --- e-smith-base-5.8.0.old/root/etc/e-smith/events/actions/user-modify-unix 2014-03-23 22:47:23.000000000 -0400 +++ e-smith-base-5.8.0/root/etc/e-smith/events/actions/user-modify-unix 2021-02-14 17:07:34.030000000 -0500 @@ -81,7 +81,7 @@ my $new_shell = $u->prop('Shell') || (($shell eq "/bin/sshell") ? "/usr/bin/rssh" : $shell); - $u->set_prop('Shell', $new_shell); + $u->set_prop('Shell', $new_shell) unless (not defined $u->prop('Shell') && $new_shell eq "/usr/bin/rssh" ) ; my $result; #------------------------------------------------------------ diff -Nur e-smith-base-5.8.0.old/root/etc/e-smith/events/actions/user-rsshd e-smith-base-5.8.0/root/etc/e-smith/events/actions/user-rsshd --- e-smith-base-5.8.0.old/root/etc/e-smith/events/actions/user-rsshd 1969-12-31 19:00:00.000000000 -0500 +++ e-smith-base-5.8.0/root/etc/e-smith/events/actions/user-rsshd 2021-02-14 17:14:00.552000000 -0500 @@ -0,0 +1,42 @@ +#!/usr/bin/perl -w + +package esmith; + +use strict; +use Errno; +use esmith::ConfigDB; +use esmith::AccountsDB; +use File::Temp; + +sub trim { my $s = shift; $s =~ s/^\s+|\s+$//g; return $s }; + +my $conf = esmith::ConfigDB->open_ro; +my $accounts = esmith::AccountsDB->open; + +my $event = $ARGV[0]; +my $userName = $ARGV[1]; +# finallement get all user +my @users = (not defined $ARGV[1])? $accounts->get_all_by_prop(type => "user" ) : map { $accounts->get($_); } $userName; +my @currents=split /\n/, `/usr/sbin/lid -ng rsshusers`; +@currents=map { trim($_) } @currents; + +# here we could be emptying group, but we might want to let system user on this list. +#if ( $event ~~ ['user-modify','user-create'] ) { +# system("/usr/bin/gpasswd","-M ''", "rsshusers"); +# print "deleting rsshusers group content ..."; +#} + +foreach my $user (@users) { + my $cuser=$user->key; + # we remove users that should not be there + if ( defined $user->prop('Shell') && $user->prop('Shell') ne '/usr/bin/rssh') { + next unless ( "$cuser" ~~ @currents ) ; + system("/usr/bin/gpasswd", "-d", $cuser, "rsshusers"); + next; + } + # next if the user is already there + next if ( "$cuser" ~~ @currents ) ; + print "Adding user $cuser to group rsshusers"; + system("/usr/sbin/usermod", "-a", "-G", "rsshusers", $cuser); + +}