runit: fix chpst -n -N -u USER
busybox's chpst first switches user/group and then tries to call nice(). Once the root priviledges are dropped, process priority can only be lowered. So negative nice values don't work anymore. Upstream version of chpst correctly calls nice() before switching user. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
e88608eae2
commit
018804204f
@ -463,6 +463,13 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
xchroot(root);
|
xchroot(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* nice should be done before xsetuid */
|
||||||
|
if (opt & OPT_n) {
|
||||||
|
errno = 0;
|
||||||
|
if (nice(xatoi(nicestr)) == -1)
|
||||||
|
bb_perror_msg_and_die("nice");
|
||||||
|
}
|
||||||
|
|
||||||
if (opt & OPT_u) {
|
if (opt & OPT_u) {
|
||||||
if (setgroups(1, &ugid.gid) == -1)
|
if (setgroups(1, &ugid.gid) == -1)
|
||||||
bb_perror_msg_and_die("setgroups");
|
bb_perror_msg_and_die("setgroups");
|
||||||
@ -470,12 +477,6 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
xsetuid(ugid.uid);
|
xsetuid(ugid.uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opt & OPT_n) {
|
|
||||||
errno = 0;
|
|
||||||
if (nice(xatoi(nicestr)) == -1)
|
|
||||||
bb_perror_msg_and_die("nice");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opt & OPT_0)
|
if (opt & OPT_0)
|
||||||
close(STDIN_FILENO);
|
close(STDIN_FILENO);
|
||||||
if (opt & OPT_1)
|
if (opt & OPT_1)
|
||||||
|
Loading…
Reference in New Issue
Block a user