+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>
* libmisc/cleanup.c: Fix del_cleanup. The arguments were not
* do not create users with UID set to (gid_t)-1.
- userdel
* 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
* Allow adding LDAP users (or any user not present in the local passwd
file) to local groups
}
if (pwd->pw_gid == grp->gr_gid) {
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);
break;
}
user_name, nsgrp->sg_name));
}
- if (deleted_user_group) {
- /* FIXME: Test if the group is in gshadow first? */
+ if ( deleted_user_group
+ && (sgr_locate (user_name) != NULL)) {
if (sgr_remove (user_name) == 0) {
fprintf (stderr,
_("%s: cannot remove entry '%s' from %s\n"),
Prog, user_name, pw_dbname ());
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,
_("%s: cannot remove entry '%s' from %s\n"),
Prog, user_name, spw_dbname ());