* src/userdel.c: Log failures to remove the mailbox to syslog and

audit.
	* src/userdel.c: Log successful removal of home directory to audit
	only in case of success.
	* src/userdel.c: Move the audit log of failure to remove the home
	directory before the call to function that may exit.
	* src/userdel.c: Document that errors is only used to count errors
	during the removal of the home directory.
This commit is contained in:
nekral-guest 2008-09-03 21:22:04 +00:00
parent f3c7ca59c5
commit 3dcaaf87e7
2 changed files with 46 additions and 21 deletions

View File

@ -1,3 +1,14 @@
2008-09-03 Nicolas François <nicolas.francois@centraliens.net>
* src/userdel.c: Log failures to remove the mailbox to syslog and
audit.
* src/userdel.c: Log successful removal of home directory to audit
only in case of success.
* src/userdel.c: Move the audit log of failure to remove the home
directory before the call to function that may exit.
* src/userdel.c: Document that errors is only used to count errors
during the removal of the home directory.
2008-09-03 Nicolas François <nicolas.francois@centraliens.net> 2008-09-03 Nicolas François <nicolas.francois@centraliens.net>
* src/useradd.c: Log errors to syslog in grp_update() since * src/useradd.c: Log errors to syslog in grp_update() since

View File

@ -695,11 +695,23 @@ static void remove_mailbox (void)
} }
snprintf (mailfile, sizeof mailfile, "%s/%s", maildir, user_name); snprintf (mailfile, sizeof mailfile, "%s/%s", maildir, user_name);
if (fflg) { if (fflg) {
unlink (mailfile); /* always remove, ignore errors */ if (unlink (mailfile) != 0) {
fprintf (stderr, _("%s: warning: can't remove %s: %s"), Prog, mailfile, strerror (errno));
SYSLOG ((LOG_ERR, "Cannot remove %s: %s", mailfile, strerror (errno)));
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_DEL_USER, Prog, audit_logger (AUDIT_DEL_USER, Prog,
"deleting mail file", "deleting mail file",
user_name, (unsigned int) user_id, 1); user_name, (unsigned int) user_id, 0);
#endif
/* continue */
}
#ifdef WITH_AUDIT
else
{
audit_logger (AUDIT_DEL_USER, Prog,
"deleting mail file",
user_name, (unsigned int) user_id, 1);
}
#endif #endif
return; return;
} }
@ -729,7 +741,8 @@ static void remove_mailbox (void)
/* continue */ /* continue */
} }
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
else { else
{
audit_logger (AUDIT_DEL_USER, Prog, audit_logger (AUDIT_DEL_USER, Prog,
"deleting mail file", "deleting mail file",
user_name, (unsigned int) user_id, 1); user_name, (unsigned int) user_id, 1);
@ -742,7 +755,7 @@ static void remove_mailbox (void)
*/ */
int main (int argc, char **argv) int main (int argc, char **argv)
{ {
int errors = 0; int errors = 0; /* Error in the removal of the home directory */
#ifdef USE_PAM #ifdef USE_PAM
pam_handle_t *pamh = NULL; pam_handle_t *pamh = NULL;
@ -891,6 +904,7 @@ int main (int argc, char **argv)
Prog, user_home, user_name); Prog, user_home, user_name);
rflg = 0; rflg = 0;
errors++; errors++;
/* continue */
} }
#ifdef EXTRA_CHECK_HOME_DIR #ifdef EXTRA_CHECK_HOME_DIR
@ -916,6 +930,7 @@ int main (int argc, char **argv)
Prog, user_home, pwd->pw_name); Prog, user_home, pwd->pw_name);
rflg = false; rflg = false;
errors++; errors++;
/* continue */
break; break;
} }
} }
@ -928,19 +943,25 @@ int main (int argc, char **argv)
fprintf (stderr, fprintf (stderr,
_("%s: error removing directory %s\n"), _("%s: error removing directory %s\n"),
Prog, user_home); Prog, user_home);
#ifdef WITH_AUDIT
audit_logger (AUDIT_DEL_USER, Prog,
"deleting home directory",
user_name, (unsigned int) user_id, 0);
#endif
errors++; errors++;
/* continue */
} }
#ifdef WITH_AUDIT #ifdef WITH_AUDIT
audit_logger (AUDIT_DEL_USER, Prog, else
"deleting home directory", {
user_name, (unsigned int) user_id, 1); audit_logger (AUDIT_DEL_USER, Prog,
"deleting home directory",
user_name, (unsigned int) user_id, 1);
}
#endif #endif
} }
#ifdef WITH_AUDIT
if (0 != errors) {
audit_logger (AUDIT_DEL_USER, Prog,
"deleting home directory",
user_name, AUDIT_NO_ID, 0);
}
#endif
/* /*
* Cancel any crontabs or at jobs. Have to do this before we remove * Cancel any crontabs or at jobs. Have to do this before we remove
@ -955,13 +976,6 @@ int main (int argc, char **argv)
#ifdef USE_PAM #ifdef USE_PAM
(void) pam_end (pamh, PAM_SUCCESS); (void) pam_end (pamh, PAM_SUCCESS);
#endif /* USE_PAM */ #endif /* USE_PAM */
#ifdef WITH_AUDIT
if (0 != errors) {
audit_logger (AUDIT_DEL_USER, Prog,
"deleting home directory",
user_name, AUDIT_NO_ID, 0);
}
#endif
exit ((0 != errors) ? E_HOMEDIR : E_SUCCESS); exit ((0 != errors) ? E_HOMEDIR : E_SUCCESS);
/* NOT REACHED */ /* NOT REACHED */
} }