start_stop_daemon: set complementary group ids too. Closes 3253
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
dd1eb413f2
commit
585541e8e3
@ -502,8 +502,16 @@ int start_stop_daemon_main(int argc UNUSED_PARAM, char **argv)
|
||||
if (opt & OPT_c) {
|
||||
struct bb_uidgid_t ugid = { -1, -1 };
|
||||
parse_chown_usergroup_or_die(&ugid, chuid);
|
||||
if (ugid.gid != (gid_t) -1) xsetgid(ugid.gid);
|
||||
if (ugid.uid != (uid_t) -1) xsetuid(ugid.uid);
|
||||
if (ugid.uid != (uid_t) -1) {
|
||||
struct passwd *pw = xgetpwuid(ugid.uid);
|
||||
if (ugid.gid != (gid_t) -1)
|
||||
pw->pw_gid = ugid.gid;
|
||||
/* initgroups, setgid, setuid: */
|
||||
change_identity(pw);
|
||||
} else if (ugid.gid != (gid_t) -1) {
|
||||
xsetgid(ugid.gid);
|
||||
setgroups(1, &ugid.gid);
|
||||
}
|
||||
}
|
||||
#if ENABLE_FEATURE_START_STOP_DAEMON_FANCY
|
||||
if (opt & OPT_NICELEVEL) {
|
||||
|
@ -1414,7 +1414,7 @@ int inetd_main(int argc UNUSED_PARAM, char **argv)
|
||||
bb_error_msg("non-root must run services as himself");
|
||||
goto do_exit1;
|
||||
}
|
||||
if (pwd->pw_uid) {
|
||||
if (pwd->pw_uid != 0) {
|
||||
if (sep->se_group)
|
||||
pwd->pw_gid = grp->gr_gid;
|
||||
/* initgroups, setgid, setuid: */
|
||||
|
Loading…
Reference in New Issue
Block a user