diff -urEbwB shadow-4.6/src/userdel.c shadow-4.6.new/src/userdel.c --- shadow-4.6/src/userdel.c 2018-04-29 18:42:37.000000000 +0200 +++ shadow-4.6.new/src/userdel.c 2018-05-14 16:13:43.996280216 +0200 @@ -125,7 +125,7 @@ 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 *); @@ -767,13 +767,13 @@ * 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; } @@ -1213,9 +1213,10 @@ } /* - * 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 (); @@ -1319,7 +1320,7 @@ * the entry from /etc/passwd. */ if(prefix[0] == '\0') - user_cancel (user_name); + call_script ("USERDEL_CMD", user_name); close_files (); #ifdef WITH_TCB @@ -1329,6 +1330,9 @@ nscd_flush_cache ("passwd"); nscd_flush_cache ("group"); + /* Call the post script, for example to rebuild NIS database */ + call_script ("USERDEL_POSTCMD", user_name); + return ((0 != errors) ? E_HOMEDIR : E_SUCCESS); }