Merge pull request #177 from edneville/conflicts_between_system_users_useradd_and_pwck

pwck.c: only check home dirs if set and not a system user
This commit is contained in:
Serge Hallyn 2019-10-05 22:08:08 -05:00 committed by GitHub
commit e78d22469f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -389,6 +389,8 @@ static void check_pw_file (int *errors, bool *changed)
struct commonio_entry *pfe, *tpfe; struct commonio_entry *pfe, *tpfe;
struct passwd *pwd; struct passwd *pwd;
struct spwd *spw; struct spwd *spw;
uid_t min_sys_id = (uid_t) getdef_ulong ("SYS_UID_MIN", 101UL);
uid_t max_sys_id = (uid_t) getdef_ulong ("SYS_UID_MAX", 999UL);
/* /*
* Loop through the entire password file. * Loop through the entire password file.
@ -517,6 +519,10 @@ static void check_pw_file (int *errors, bool *changed)
*errors += 1; *errors += 1;
} }
/*
* If uid is system and has a home directory, then check
*/
if (!(pwd->pw_uid >= min_sys_id && pwd->pw_uid <= max_sys_id && pwd->pw_dir && pwd->pw_dir[0])) {
/* /*
* Make sure the home directory exists * Make sure the home directory exists
*/ */
@ -528,6 +534,7 @@ static void check_pw_file (int *errors, bool *changed)
pwd->pw_name, pwd->pw_dir); pwd->pw_name, pwd->pw_dir);
*errors += 1; *errors += 1;
} }
}
/* /*
* Make sure the login shell is executable * Make sure the login shell is executable