summaryrefslogtreecommitdiff
path: root/lib/Vyatta/Login
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2010-01-27 09:37:05 -0800
committerStephen Hemminger <stephen.hemminger@vyatta.com>2010-01-27 09:37:05 -0800
commitbefc5e7de0d37fe462c0837a8c3ed47d66283dbe (patch)
tree136bd424ce1079b8ac7e3469346158b630020c97 /lib/Vyatta/Login
parent10dadbb8516613d2ea31c9ddc73b4005b3f8f7e0 (diff)
downloadvyatta-cfg-quagga-befc5e7de0d37fe462c0837a8c3ed47d66283dbe.tar.gz
vyatta-cfg-quagga-befc5e7de0d37fe462c0837a8c3ed47d66283dbe.zip
Don't delete non-user accounts
Only mess with user accounts in the dynamic range (1000-29999); don't delete 'nobody' for example. Also, leave home directory for possible examination.
Diffstat (limited to 'lib/Vyatta/Login')
-rwxr-xr-xlib/Vyatta/Login/User.pm7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/Vyatta/Login/User.pm b/lib/Vyatta/Login/User.pm
index 1aee01dd..3038c467 100755
--- a/lib/Vyatta/Login/User.pm
+++ b/lib/Vyatta/Login/User.pm
@@ -171,13 +171,13 @@ sub _update_user {
}
}
+# returns list of dynamically allocated users (see Debian Policy Manual)
sub _local_users {
my @users;
setpwent();
while ( my ($name, undef, $uid) = getpwent() ) {
- # Skip system accounts (< SYS_UID_MAX)
- next if $uid < 1000;
+ next unless ($uid >= 1000 && $uid <= 29999);
push @users, $name;
}
endpwent();
@@ -213,7 +213,8 @@ sub update {
next if defined $users{$user};
warn "User $user not listed in current configuration\n";
- system("sudo userdel --remove $user") == 0
+ # Remove user account but leave home directory to be safe
+ system("sudo userdel $user") == 0
or die "Attempt to delete user $user failed: $!";
}
}