diff -up e-smith-samba-2.2.0/root/etc/e-smith/events/actions/update-domain-group-maps.fix_modify e-smith-samba-2.2.0/root/etc/e-smith/events/actions/update-domain-group-maps --- e-smith-samba-2.2.0/root/etc/e-smith/events/actions/update-domain-group-maps.fix_modify 2008-10-07 11:37:34.000000000 -0600 +++ e-smith-samba-2.2.0/root/etc/e-smith/events/actions/update-domain-group-maps 2010-10-27 15:24:17.000000000 -0600 @@ -37,7 +37,7 @@ my %ridmap = ( 'Domain Users' => '513', 'Domain Guests' => '514'); -my %mapping_done = (); +my %sidmap = (); foreach (`/usr/bin/net groupmap list`) { chomp; @@ -58,12 +58,14 @@ foreach (`/usr/bin/net groupmap list`) elsif ($sid =~ /^$local_sid-/) { my $ug = $mappings{$nt}; - system('/usr/bin/net',$debug, - 'groupmap','modify', - "sid=$sid", - "unixgroup=$ug", - 'type=d') unless ($group eq $ug); - $mapping_done{$nt} = 1; + if ($group eq $ug) + { + $sidmap{$nt} = 'done'; + } + else + { + system('/usr/bin/net','groupmap','delete',"sid=$sid"); + } } else { @@ -81,11 +83,12 @@ foreach (`/usr/bin/net groupmap list`) foreach (keys %mappings) { - next if $mapping_done{$_}; + next if $sidmap{$_} && $sidmap{$_} eq 'done'; system('/usr/bin/net',$debug, 'groupmap','add', "ntgroup=$_", "unixgroup=" . $mappings{$_}, $ridmap{$_} ? "rid=$ridmap{$_}" : (), + $sidmap{$_} && ! $ridmap{$_} ? "sid=$sidmap{$_}" : (), 'type=d'); }