summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2009-09-11 14:43:18 -0700
committerStephen Hemminger <stephen.hemminger@vyatta.com>2009-09-11 17:15:16 -0700
commit1e8e3983696df259dfe8ee3d287359d41efad962 (patch)
treed39555236bd75c5d9c7a4767835861be69e96481
parent1078f7a7eb25dd5da11a8228892aa15ca10245ed (diff)
downloadvyatta-cfg-system-1e8e3983696df259dfe8ee3d287359d41efad962.tar.gz
vyatta-cfg-system-1e8e3983696df259dfe8ee3d287359d41efad962.zip
Delete vyatta users not in configuration
This implements rollback for users that were added during a previous configuration (and committed), but were never saved into configuration. Bug: 4528
-rwxr-xr-xlib/Vyatta/Login/User.pm17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/Vyatta/Login/User.pm b/lib/Vyatta/Login/User.pm
index b0954e06..fc890e73 100755
--- a/lib/Vyatta/Login/User.pm
+++ b/lib/Vyatta/Login/User.pm
@@ -135,6 +135,23 @@ sub update {
die "Attempt to change user $user failed: $reason\n";
}
}
+
+ # Remove any vyatta users that do not exist in current configuration
+ # This can happen if user added but configuration not saved
+ foreach my $grp (qw(vyattacfg vyattaop)) {
+ my (undef, undef, undef, $members) = getgrnam($grp);
+ next unless $members;
+
+ foreach my $user (split / /, $members) {
+ next if ($user eq 'root');
+ next if ($user eq 'www-data'); # webgui
+ next if defined $users{$user};
+
+ warn "User $user not listed in current configuration\n";
+ system ("userdel --remove $user") == 0
+ or die "Attempt to delete user $user failed: $!";
+ }
+ }
}
1;