diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2009-09-11 14:43:18 -0700 |
---|---|---|
committer | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2009-09-11 17:15:16 -0700 |
commit | 1e8e3983696df259dfe8ee3d287359d41efad962 (patch) | |
tree | d39555236bd75c5d9c7a4767835861be69e96481 | |
parent | 1078f7a7eb25dd5da11a8228892aa15ca10245ed (diff) | |
download | vyatta-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-x | lib/Vyatta/Login/User.pm | 17 |
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; |