* NEWS, src/userdel.c: Make sure the user exists in the shadow

database before calling spw_remove().
	* NEWS, src/userdel.c: When the user's group is removed, make sure
	the group is in the gshadow database before calling sgr_remove().
	* src/userdel.c: Improve warning's wording.
This commit is contained in:
nekral-guest 2009-03-15 21:29:16 +00:00
parent 9fda9f5c28
commit 9372111aaa
3 changed files with 17 additions and 4 deletions

View File

@ -1,3 +1,11 @@
2009-03-15 Nicolas François <nicolas.francois@centraliens.net>
* NEWS, src/userdel.c: Make sure the user exists in the shadow
database before calling spw_remove().
* NEWS, src/userdel.c: When the user's group is removed, make sure
the group is in the gshadow database before calling sgr_remove().
* src/userdel.c: Improve warning's wording.
2009-03-15 Nicolas François <nicolas.francois@centraliens.net> 2009-03-15 Nicolas François <nicolas.francois@centraliens.net>
* libmisc/cleanup.c: Fix del_cleanup. The arguments were not * libmisc/cleanup.c: Fix del_cleanup. The arguments were not

3
NEWS
View File

@ -98,6 +98,9 @@ shadow-4.1.2.2 -> shadow-4.1.3 UNRELEASED
* do not create users with UID set to (gid_t)-1. * do not create users with UID set to (gid_t)-1.
- userdel - userdel
* audit logging improvements. * audit logging improvements.
* Do not fail if the removed user is not in the shadow database.
* When the user's group shall be removed, do not fail if this group is
not in the gshadow file.
- usermod - usermod
* Allow adding LDAP users (or any user not present in the local passwd * Allow adding LDAP users (or any user not present in the local passwd
file) to local groups file) to local groups

View File

@ -216,7 +216,7 @@ static void update_groups (void)
} }
if (pwd->pw_gid == grp->gr_gid) { if (pwd->pw_gid == grp->gr_gid) {
fprintf (stderr, fprintf (stderr,
_("%s: Cannot remove group %s which is a primary group for another user.\n"), _("%s: group %s is the primary group of another user and is not removed.\n"),
Prog, grp->gr_name); Prog, grp->gr_name);
break; break;
} }
@ -309,8 +309,8 @@ static void update_groups (void)
user_name, nsgrp->sg_name)); user_name, nsgrp->sg_name));
} }
if (deleted_user_group) { if ( deleted_user_group
/* FIXME: Test if the group is in gshadow first? */ && (sgr_locate (user_name) != NULL)) {
if (sgr_remove (user_name) == 0) { if (sgr_remove (user_name) == 0) {
fprintf (stderr, fprintf (stderr,
_("%s: cannot remove entry '%s' from %s\n"), _("%s: cannot remove entry '%s' from %s\n"),
@ -559,7 +559,9 @@ static void update_user (void)
Prog, user_name, pw_dbname ()); Prog, user_name, pw_dbname ());
fail_exit (E_PW_UPDATE); fail_exit (E_PW_UPDATE);
} }
if (is_shadow_pwd && (spw_remove (user_name) == 0)) { if ( is_shadow_pwd
&& (spw_locate (user_name) != NULL)
&& (spw_remove (user_name) == 0)) {
fprintf (stderr, fprintf (stderr,
_("%s: cannot remove entry '%s' from %s\n"), _("%s: cannot remove entry '%s' from %s\n"),
Prog, user_name, spw_dbname ()); Prog, user_name, spw_dbname ());