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) {
|
if (opt & OPT_c) {
|
||||||
struct bb_uidgid_t ugid = { -1, -1 };
|
struct bb_uidgid_t ugid = { -1, -1 };
|
||||||
parse_chown_usergroup_or_die(&ugid, chuid);
|
parse_chown_usergroup_or_die(&ugid, chuid);
|
||||||
if (ugid.gid != (gid_t) -1) xsetgid(ugid.gid);
|
if (ugid.uid != (uid_t) -1) {
|
||||||
if (ugid.uid != (uid_t) -1) xsetuid(ugid.uid);
|
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 ENABLE_FEATURE_START_STOP_DAEMON_FANCY
|
||||||
if (opt & OPT_NICELEVEL) {
|
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");
|
bb_error_msg("non-root must run services as himself");
|
||||||
goto do_exit1;
|
goto do_exit1;
|
||||||
}
|
}
|
||||||
if (pwd->pw_uid) {
|
if (pwd->pw_uid != 0) {
|
||||||
if (sep->se_group)
|
if (sep->se_group)
|
||||||
pwd->pw_gid = grp->gr_gid;
|
pwd->pw_gid = grp->gr_gid;
|
||||||
/* initgroups, setgid, setuid: */
|
/* initgroups, setgid, setuid: */
|
||||||
|
Loading…
Reference in New Issue
Block a user