- Update to 4.9: * Updated translations * Major salt updates * Various coverity and cleanup fixes * Consistently use 0 to disable PASS_MIN_DAYS in man * Implement NSS support for subids and a libsubid * setfcap: retain setfcap when mapping uid 0 * login.defs: include HMAC_CRYPTO_ALGO key * selinux fixes * Fix path prefix path handling * Manpage updates * Treat an empty passwd field as invalid(Haelwenn Monnier) * newxidmap: allow running under alternative gid * usermod: check that shell is executable * Add yescript support * useradd memleak fixes * useradd: use built-in settings by default * getdefs: add foreign * buffer overflow fixes * Adding run-parts style for pre and post useradd/del - Refresh: * shadow-login_defs-unused-by-pam.patch * userdel-script.patch * useradd-script.patch * chkname-regex.patch * useradd-default.patch: bbf4b79 stopped shipping default file. change group in code now. * shadow-login_defs-suse.patch * useradd-userkeleton.patch - Remove because upstreamed: OBS-URL: https://build.opensuse.org/request/show/912915 OBS-URL: https://build.opensuse.org/package/show/Base:System/shadow?expand=0&rev=106
105 lines
3.2 KiB
Diff
105 lines
3.2 KiB
Diff
Index: lib/getdef.c
|
|
===================================================================
|
|
--- lib/getdef.c.orig
|
|
+++ lib/getdef.c
|
|
@@ -150,6 +150,8 @@ static struct itemdef def_table[] = {
|
|
{"UID_MIN", NULL},
|
|
{"UMASK", NULL},
|
|
{"USERDEL_CMD", NULL},
|
|
+ {"USERDEL_PRECMD", NULL},
|
|
+ {"USERDEL_POSTCMD", NULL},
|
|
{"USERGROUPS_ENAB", NULL},
|
|
#ifndef USE_PAM
|
|
PAMDEFS
|
|
Index: etc/login.defs
|
|
===================================================================
|
|
--- etc/login.defs.orig
|
|
+++ etc/login.defs
|
|
@@ -270,9 +270,25 @@ NONEXISTENT /nonexistent
|
|
# It should remove any at/cron/print jobs etc. owned by
|
|
# the user to be removed (passed as the first argument).
|
|
#
|
|
+# See also USERDEL_PRECMD and USERDEL_POSTCMD below.
|
|
+#
|
|
#USERDEL_CMD /usr/sbin/userdel_local
|
|
|
|
#
|
|
+# If defined, this command is run before removing a user.
|
|
+# It should remove any at/cron/print jobs etc. owned by
|
|
+# the user to be removed.
|
|
+#
|
|
+USERDEL_PRECMD /usr/sbin/userdel-pre.local
|
|
+
|
|
+#
|
|
+# If defined, this command is run after removing a user.
|
|
+# It should rebuild any NIS database etc. to remove the
|
|
+# account from it.
|
|
+#
|
|
+USERDEL_POSTCMD /usr/sbin/userdel-post.local
|
|
+
|
|
+#
|
|
# Enable setting of the umask group bits to be the same as owner bits
|
|
# (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is
|
|
# the same as gid, and username is the same as the primary group name.
|
|
Index: src/userdel.c
|
|
===================================================================
|
|
--- src/userdel.c.orig
|
|
+++ src/userdel.c
|
|
@@ -131,7 +131,7 @@ static void close_files (void);
|
|
static void fail_exit (int);
|
|
static void open_files (void);
|
|
static void update_user (void);
|
|
-static void user_cancel (const char *);
|
|
+static void call_script (const char *, const char *);
|
|
|
|
#ifdef EXTRA_CHECK_HOME_DIR
|
|
static bool path_prefix (const char *, const char *);
|
|
@@ -774,13 +774,13 @@ static void update_user (void)
|
|
* cron, at, or print jobs.
|
|
*/
|
|
|
|
-static void user_cancel (const char *user)
|
|
+static void call_script (const char *program, const char *user)
|
|
{
|
|
const char *cmd;
|
|
const char *argv[3];
|
|
int status;
|
|
|
|
- cmd = getdef_str ("USERDEL_CMD");
|
|
+ cmd = getdef_str (program);
|
|
if (NULL == cmd) {
|
|
return;
|
|
}
|
|
@@ -1225,9 +1225,10 @@ int main (int argc, char **argv)
|
|
}
|
|
|
|
/*
|
|
- * Do the hard stuff - open the files, create the user entries,
|
|
- * create the home directory, then close and update the files.
|
|
+ * Do the hard stuff - open the files, remove the user entries,
|
|
+ * remove the home directory, then close and update the files.
|
|
*/
|
|
+ call_script ("USERDEL_PRECMD", user_name);
|
|
open_files ();
|
|
update_user ();
|
|
update_groups ();
|
|
@@ -1348,7 +1349,7 @@ int main (int argc, char **argv)
|
|
* the entry from /etc/passwd.
|
|
*/
|
|
if(prefix[0] == '\0')
|
|
- user_cancel (user_name);
|
|
+ call_script ("USERDEL_CMD", user_name);
|
|
close_files ();
|
|
|
|
if (run_parts ("/etc/shadow-maint/userdel-post.d", user_name, "userdel")) {
|
|
@@ -1363,6 +1364,9 @@ int main (int argc, char **argv)
|
|
nscd_flush_cache ("group");
|
|
sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP);
|
|
|
|
+ /* Call the post script, for example to rebuild NIS database */
|
|
+ call_script ("USERDEL_POSTCMD", user_name);
|
|
+
|
|
return ((0 != errors) ? E_HOMEDIR : E_SUCCESS);
|
|
}
|
|
|