Merge pull request #422 from ikerexxe/home_selinux_user
Create the home and mail directories with SELinux user label
This commit is contained in:
commit
7d02af944f
@ -392,6 +392,7 @@ extern /*@observer@*/const char *crypt_make_salt (/*@null@*//*@observer@*/const
|
|||||||
/* selinux.c */
|
/* selinux.c */
|
||||||
#ifdef WITH_SELINUX
|
#ifdef WITH_SELINUX
|
||||||
extern int set_selinux_file_context (const char *dst_name, mode_t mode);
|
extern int set_selinux_file_context (const char *dst_name, mode_t mode);
|
||||||
|
extern void reset_selinux_handle (void);
|
||||||
extern int reset_selinux_file_context (void);
|
extern int reset_selinux_file_context (void);
|
||||||
extern int check_selinux_permit (const char *perm_name);
|
extern int check_selinux_permit (const char *perm_name);
|
||||||
#endif
|
#endif
|
||||||
|
@ -50,6 +50,11 @@ static void cleanup(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void reset_selinux_handle (void)
|
||||||
|
{
|
||||||
|
cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* set_selinux_file_context - Set the security context before any file or
|
* set_selinux_file_context - Set the security context before any file or
|
||||||
* directory creation.
|
* directory creation.
|
||||||
|
@ -293,6 +293,7 @@ int set_seuser (const char *login_name, const char *seuser_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
reset_selinux_handle();
|
||||||
|
|
||||||
done:
|
done:
|
||||||
semanage_seuser_key_free (key);
|
semanage_seuser_key_free (key);
|
||||||
|
@ -2670,27 +2670,12 @@ int main (int argc, char **argv)
|
|||||||
|
|
||||||
usr_update (subuid_count, subgid_count);
|
usr_update (subuid_count, subgid_count);
|
||||||
|
|
||||||
if (mflg) {
|
|
||||||
create_home ();
|
|
||||||
if (home_added) {
|
|
||||||
copy_tree (def_template, prefix_user_home, false, false,
|
|
||||||
(uid_t)-1, user_id, (gid_t)-1, user_gid);
|
|
||||||
} else {
|
|
||||||
fprintf (stderr,
|
|
||||||
_("%s: warning: the home directory %s already exists.\n"
|
|
||||||
"%s: Not copying any file from skel directory into it.\n"),
|
|
||||||
Prog, user_home, Prog);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Do not create mail directory for system accounts */
|
|
||||||
if (!rflg) {
|
|
||||||
create_mail ();
|
|
||||||
}
|
|
||||||
|
|
||||||
close_files ();
|
close_files ();
|
||||||
|
|
||||||
|
nscd_flush_cache ("passwd");
|
||||||
|
nscd_flush_cache ("group");
|
||||||
|
sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* tallylog_reset needs to be able to lookup
|
* tallylog_reset needs to be able to lookup
|
||||||
* a valid existing user name,
|
* a valid existing user name,
|
||||||
@ -2716,15 +2701,30 @@ int main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
#endif /* WITH_SELINUX */
|
#endif /* WITH_SELINUX */
|
||||||
|
|
||||||
|
if (mflg) {
|
||||||
|
create_home ();
|
||||||
|
if (home_added) {
|
||||||
|
copy_tree (def_template, prefix_user_home, false, false,
|
||||||
|
(uid_t)-1, user_id, (gid_t)-1, user_gid);
|
||||||
|
} else {
|
||||||
|
fprintf (stderr,
|
||||||
|
_("%s: warning: the home directory %s already exists.\n"
|
||||||
|
"%s: Not copying any file from skel directory into it.\n"),
|
||||||
|
Prog, user_home, Prog);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Do not create mail directory for system accounts */
|
||||||
|
if (!rflg) {
|
||||||
|
create_mail ();
|
||||||
|
}
|
||||||
|
|
||||||
if (run_parts ("/etc/shadow-maint/useradd-post.d", (char*)user_name,
|
if (run_parts ("/etc/shadow-maint/useradd-post.d", (char*)user_name,
|
||||||
"useradd")) {
|
"useradd")) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
nscd_flush_cache ("passwd");
|
|
||||||
nscd_flush_cache ("group");
|
|
||||||
sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP);
|
|
||||||
|
|
||||||
return E_SUCCESS;
|
return E_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user